web-dev-qa-db-fra.com

Comment vérifier si un fichier est un fichier texte?

Perl6 a-t-il quelque chose comme Perl5 - test de fichier T pour dire si un fichier est un fichier texte?

23
sid_com

Il n'y a rien de intégré, mais il y a un module Data :: TextOrBinary qui fait ça.

use Data::TextOrBinary;
say is-text('/bin/bash'.IO);                            # False
say is-text('/usr/share/dict/words'.IO);                # True
22

C'est une heuristique qui n'a pas été traduite en Perl 6 . Vous pouvez simplement le lire en UTF8 (ou ASCII) pour faire de même:

given Slurp("read-utf8.p6", enc => 'utf8') -> $f {
    say "UTF8";
}

(remplacez read-utf8.p6 par le nom du fichier que vous souhaitez vérifier)

10
jjmerelo

nous pouvons utiliser File :: Type avec le code suivant.

use strict;
use warnings;

use File::Type;

my $file      = '/path/to/file.ext';
my $ft        = File::Type->new();
my $file_type = $ft->mime_type($file);

if ( $file_type eq 'application/octet-stream' ) {
    # possibly a text file
}
elsif ( $file_type eq 'application/Zip' ) {
    # file is a Zip archive
}

Source: https://metacpan.org/pod/File::Type

4
Sandy P. Chaudhry