Isfileemptybinaryortextonly --- anciennement nommé isbinaryfile est ce qu un fichier est binaire ou texte?

Description

MERCI a ceux qui ont commenté ma source et permis de l'améliorer.

En résumé:

-Tout fichier est en principe binaire
-ce qu'on appelle fichiers textes sont des fichiers binaires ne contentnat normalement pas de Chr(0)
(suite à des tests, j'ai vu que Winmerge.exe et UltraEdit.exe fonctionnent sur ce principe par rapport à ce sujet,
ils montrent binaire si Chr(0) trouvé dans le fichier chargé.
-Un fichier peut ètre vide et n'ètre donc ni binaire ni texte ou les deux
-Lors de l'ouverture du fichier, il peut survenir une erreur (si par exemple pas de permission d'accès)

La fonction isFileEmptyBinaryOrTextOnly renvoie donc 4 valeurs possibles de retour:

Public Enum isFileEmptyBinaryOrTextOnlyEnum 'Valeurs de retour possibles
FileEmpty = 1
FileBinary = 2
FileTextOnly = 3
FileCouldNotOpen = 4 'happens if File does not exist or the user has not the right to open the file, etc.
'ErrMsg returns "Access denied" or something like this
End Enum

Le module met a disposition 2 fonctions

Public Function isFileEmptyBinaryOrTextOnly(FilePath As String, _
Optional ByRef ErrMsg As String, _
Optional ByRef NulCharFoundAtPos As Long, _
Optional ByVal maxByteReadForSearchOfChr0_DefaultValue255Kb As Long = 261120) As isFileEmptyBinaryOrTextOnlyEnum

Public Function ReturnValueToStringOfIsFileEmptyBinaryOrTextOnly(val As isFileEmptyBinaryOrTextOnlyEnum, _
Optional ByRef ErrMsg As String = "") As String

Vous pouvey librement utiliser ce module dans votre application. Il vous faudra pour cela juste implementer localement dans votre projet la fonction FileExists, tres facile. (dasn le projet de test fourni, c'est implémenté au travers de FileSzstemObject.FileExists)

'Utilisation externe, exemple:
dim ErrMsg as String
Select Case isFileEmptyBinaryOrTextOnly(FilePath, ErrMsg )
Case FileEmpty
'DoWhatYouWant
Case FileBinary
'DoWhatYouWant
Case FileTextOnly
'DoWhatYouWant
Case FileCouldNotOpen
'MsgBox ErrMsg
End Select

Le projet de testé

Il permet d'ouvrir un fichier et tester le résultat en bleu a l écran, de scanner un repértoire et enregistrer le résultat en .txt separé par des Tabulations, importer ce fichier dans Excel (si excel est installé) et de mettre le bon format de date puis, si Access est installé, importer le fichier excel dans le fichier .mdb fourni avec le projet (ou dans tout fichier .mdb du même nom que l'exe). Ce fichier .mdb fait les sql pour trier et regarder le résultat agréablement.

Source / Exemple :


ClsWinVersion.cls                    'pour la fonction StartFile
Explications.gif                     'pour montrer le prog de test
FileEmptyBinaryOrTextOnly.mdb        'pour analyser les résultats de test
FileEmptyBinaryOrTextOnly.vbp        'le projet
getFileByFileDialogM.bas             'pour GUI
isFileEmptyBinaryOrTextOnlyForm.frm  'pour GUI
isFileEmptyBinaryOrTextOnlyM.bas    '-LA FONCTION sujette de cette source
ShellLink.cls                        'pour résoudre un raccourcis, pour la fonction StartFile
ShellLink.tlb                        'trouvé sur internet, écrit en c, pour ShellLink.cls
StartFileM.bas                       'pour starter un fichier, utilise cmd start du shell pour montrer un fichier par le programme par défaut

Conclusion :


Ajoutez isFileEmptyBinaryOrTextOnlyM.bas dans votre projet si vous avez besoin d une telle fonction. Elle a ete testee sur tous les fichiers de mon disque dur.

LIMITATION
Mon scan de Data me retourne un fichier texte de 88440 lignes correspondant é des fichiers. L'importation dans Excel s'arrete aprés 56549 lignes.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.