2016-05-13 5 views
0

Ich arbeite mit Tika File Detector. Es prüft, welche Datei Typ meine Datei ist.Speichern Sie Ergebnisse in einer Liste und geben Sie die Liste zu einem CSV

Im Moment ist mein Code wie folgt

if (Type.endsWith("application/msword")){ //Match if its .doc 
    } 

    else if (Type.endsWith("application/vnd.ms-powerpoint")){ //Match if its .ppt 
    } 

    else if (Type.endsWith("application/vnd.ms-excel")){ //Match if its .xls 
    } 

    else if (Type.endsWith("application/vnd.openxmlformats-officedocument.wordprocessingml.document")){ //Match if its .docx 

Jetzt möchte ich das Ergebnis in einer Liste speichern, die Liste zwei Einträge hat. Wenn ich alle Dateien überprüft habe, möchte ich die Liste in einer CSV-Datei speichern.

Ich versuchte dies mit einer hashmap, aber das hat nicht funktioniert.

Antwort

1

Sie könnten parallele Arrays verwenden. Ich rate einen für den Dateinamen und einen für den Dateityp, aber es ist nicht notwendig, die Informationen in einer temporären Datenstruktur zu speichern, wenn Sie nur in .csv schreiben.

Wenn Sie Dateinamen schreiben, Mime-String und Erweiterung zu einem csv, tun so etwas, wo Sie durch Ihre Dateien in Haupt iterieren() ...

static Tika tika = new Tika(); 
static MimeTypes mimeTypes = TikaConfig.getDefaultConfig().getMimeRepository(); 


static void processFile(Path p, Writer writer) throws IOException, MimeTypeException { 
    String mimeString = tika.detect(p); 
    MimeType mt = mimeTypes.forName(mimeString); 
    writer.write(String.format("%s,%s,%s,%n", 
      p.getFileName(),mimeString,mt.getExtension())); 
} 

Sie wollen hinzufügen Ausnahmebehandlung, und es ist immer besser, einen echten CSV-Schreiber zu verwenden (siehe Apache Commons csv), als zu "hoffen", da keines Ihrer Daten ein Komma/Newline hat oder ein eigenes zu rollen.