ist Datei lesbar (enthält Text ist eher zugänglich)

9

Ich arbeite an einem Projekt, das alle Dateien von lokalen Hdd liest, Ich gebe die Erweiterungen an, die ich in die Suche einbeziehen möchte.

Alle ausgewählten Dateierweiterungen basieren auf der Tatsache, dass die Datei Textinhalt ist.

so könnte ich für meine Verwendung angeben, welche Erweiterungen berücksichtigt werden sollen, wie .cs .html .htm .css .js etc '

Was ist, wenn ich ein Feature hinzufügen möchte, mit dem generische Benutzer Erweiterungen auswählen können? und lassen Sie ihn aus allen verfügbaren Windows-Dateierweiterungen auswählen, aber nur diejenigen Dateien in seinem System, die textlich sind. Zum Beispiel wissen wir, dass exe, mp3. mpg, avi sind nicht aber er könnte andere Dateitypen (.extensions) haben, die wir nicht berücksichtigt haben.

gibt es eine Möglichkeit zu entscheiden, dass basierend auf Systemdateieigenschaft, wenn nicht Wie wäre es, nur Textinhaltsdateien zu filtern?

    
Jbob Johan 14.11.2015, 18:56
quelle

2 Antworten

3

Ein Mechanismus für Windows-Maschinen besteht darin, den Inhaltstyp in der Windows-Registrierung nachzuschlagen, die der Dateierweiterung zugeordnet ist. (Ich kenne keine Möglichkeit, dies ohne eine direkte Registrierungssuche zu tun.)

Innerhalb der Registrierung sollten Dateierweiterungen, die textbasiert sind, im Allgemeinen eines oder mehrere dieser Merkmale aufweisen:

  • Ein Inhaltstyp, der den primären MIME-Texttyp angibt, z. B. text/plain oder text/application
  • Ein wahrgenommener Typ von text
  • Ein Standardhandler mit der GUID {5e941d80-bf96-11cd-b579-08002b30bfeb} , die dem persistenten Nur-Text-Handler zugewiesen ist.

Die folgende Methode gibt alle Systemerweiterungen zurück, die diesen Merkmalen zugeordnet sind:

%Vor%

Die Ausgabe hängt von der Konfiguration der Arbeitsstation ab, aber auf meiner aktuellen Maschine gibt es zurück:

  
    

.a, .AddIn, .ans, .asc, .asm, .asmx, .aspx, .asx, .bas, .bat, .bcp, .c, .cc, .cd, .cls, .cmd , ...

  

Dies hängt zwar davon ab, dass die Anwendungsprogramme die Dateierweiterungen korrekt zuordnen, doch scheint es die meisten der wichtigsten Textdateitypen zu identifizieren.

    
drf 14.11.2015, 19:48
quelle
0

Im Allgemeinen gibt es keinen guten und zuverlässigen Weg, dies zu tun.

Sie können nicht entscheiden, indem Sie Dateierweiterungen vergleichen - es ist nur ein Teil von filename und jeder kann es ändern, so dass auch file.exe eine reine Textdatei sein kann.

  

C # - Überprüfen Sie, ob die Datei textbasiert ist < Sie können einfach die ersten 1000 Zeichen (beliebige Zahl) überprüfen und prüfen, ob nicht druckbare Zeichen vorhanden sind oder ob es sich um ASCII-Zeichen in einem bestimmten Bereich handelt.

    
Martin Heralecký 14.11.2015 19:11
quelle

Tags und Links