Comment puis-je vérifier si le fichier est binaire ou texte sans ouvrir le fichier? p>
5 Réponses :
Il n'y a aucun moyen d'être certain sans regarder dans le fichier. Hoewever, vous n'avez pas à l'ouvrir avec un éditeur et voir par vous-même d'avoir un indice. Vous voudrez peut-être examiner la commande code> code>: http: // Linux .Die.net / Man / 1 / Fichier P>
Le chat de Schrödinger, j'ai peur.
Il n'y a aucun moyen de déterminer le contenu d'un fichier sans l'ouvrir. Le système de fichiers ne stocke aucune métadonnée relatif au contenu. P>
Si vous ne pouvez pas ouvrir le fichier n'est pas une exigence difficile, il existe un certain nombre de solutions à votre disposition. p>
Il a été suggéré dans un certain nombre de commentaires et de réponses que fichier (1) code> est un bon moyen de déterminer le contenu. En effet, ça l'est. Cependant, fichier (1) code> s'ouvre em> le fichier, interdit dans la question. Voir l'avant-dernière ligne dans l'exemple suivant: p>
Le fichier de commande UNIX fait un bon travail pour déterminer de manière heuristique le type
@Joel: Oui ça fait. Il ouvre également le fichier.
La question est trop vague pour savoir si «ouvert» signifie ouvert (2). "Open" a d'autres connotations.
Assez vrai, @camh. Je prends "ouvert" pour signifier "examiner le contenu du fichier". Peut-être que @Lidia est intéressé à savoir si un fichier sur lequel l'utilisateur n'a aucune autorisation de lecture est le texte ou le binaire. 'Fichier', etcetera n'aurait aucune utilité ici.
Si vous essayez de le faire à partir d'une coque de commande, la commande Je ne suis pas au courant d'une méthode de 100% de détermination de cela, mais la commande de fichier est probablement la plus précise. p> Fichier CODE> devra-t-elle supposer ce que c'est la filetype. Si c'est un texte, il inclura généralement le texte du texte dans sa description. P>
En effet, cela fait, même si je ne savais pas s'il était opposé à l'ouverture du dossier lui-même ou d'avoir une utilité ouverte. J'ai déclaré qu'il n'y avait pas de méthode de 100% de cela.
in Unix, un fichier est juste quelques octets. Donc, sans ouvrir le fichier, vous ne pouvez pas comprendre 100%, c'est qu'il est ASCII ou binaire. P>
Vous pouvez simplement utiliser des outils à votre disposition et creuser plus profond pour le faire tromper la preuve. P>
La bonne façon de déterminer le type d'un fichier est d'utiliser la commande Fichier (1). P>
Vous devez également savoir que les fichiers codés UTF-8 sont des fichiers "texte", mais peuvent contenir des données non ASCII. D'autres codages ont également ce problème. Dans le cas du texte codé avec un page de code , il peut ne pas être possible de déterminer sans ambiguïté si Un fichier est du texte ou non. P>
La commande Fichier (1) examinera la structure d'un fichier pour essayer de déterminer ce qu'il contient - dans la page Fichier (1) Man: P>
Le type imprimé contiendra généralement un des mots texte em> strud> (le fichier contient uniquement des caractères d'impression et quelques caractères de contrôle communs et est probablement sans danger pour lire sur une ASCII terminal), exécutable em> strud> (le fichier contient le résultat de la compilation d'un programme dans un forme compréhensible à un noyau UNIX ou un autre), ou Data em> strong> signifie n'importe quoi sinon (les données sont généralement «binaires» ou non-imprimables). P> blockQuote>
En ce qui concerne les codages de caractères différents, la page Fichier (1) Man a cela à dire: P>
Si un fichier ne correspond à aucun des entrées dans le fichier magique, il est examiné pour voir s'il semble être un fichier texte. ASCII, ISO-8859-X, non ISO 8 bits Set d'ensemble de caractères Ascii (tels que ceux utilisés sur Macintosh et IBM PC Systems), UTF-8-codé Unicode, UTF-16-codé Unicode, et Les ensembles de caractères EBCDIC peuvent être distingués par les différentes gammes et Séquences d'octets qui constituent un texte imprimable dans chaque ensemble. Si un fichier Passe l'un de ces tests, son ensemble de caractères est rapporté. Ascii, ISO-8859-X, UTF-8 et les fichiers étendus-ASCII sont identifiés comme étant 'texte' parce qu'ils seront surtout lisibles sur presque n'importe quel terminal; Utf-16 et EBCDIC ne sont que des "données de caractères" car, bien qu'ils contiennent du texte, il est Texte qui nécessitera une traduction avant de pouvoir être lu. p> blockQuote>
Donc, un texte sera identifié comme strong> texte strong>, mais certains peuvent être identifiés comme
Données de caractères forts>. Vous devrez déterminer vous-même si cela importe votre candidature et prendre les mesures appropriées. P>
Il est difficile de dire s'il s'agit d'une programmation liée ou de savoir s'il devrait être migré vers superUser.com (est un utilitaire existant recherché?).
Le texte est au mieux un sous-ensemble de binaire, sinon simplement une interprétation. Considérons un fichier d'une octet contenant
0x65 code>. Maintenant, dites-moi absolument si c'est binaire ou texte.Qu'en est-il de la copie du fichier avant de vérifier. Copie -> Ouvrir -> Vérifier -> Supprimer
@alu: Comment allez-vous copier un fichier sans l'ouvrir?
@Msalters, attendez simplement que vous voyiez le format d'image bitmap codé par ASCII.
@Msalters Vous pouvez dans de nombreux cas dire absolument si le "binaire" est dans le "sous-ensemble de texte".