2017-06-06 5 views
-1

Ich habe einen JFileChooser (hier nicht gezeigt), der eine Benutzerdatei eingibt. Ich möchte sicherstellen, dass der Benutzer nur eine TXT-Datei eingibt. Gibt es eine Funktion, mit der dies mit JFileChooser oder einer anderen möglichen Lösung verifiziert werden kann? Ich hielt die folgenden:Sicherstellen, dass der Benutzer einen bestimmten Dateityp eingibt

if (selectedFile != null && selectedFile.getName().endsWith(".txt")){ 
    //action 
} else { 
    JOptionPane.showMessageDialog(null, "You have not selected a .txt file. Please choose a correct file type to continue.); 
} 

Wenn es jedoch möglich ist, ich möchte für den Fall, dass auch wenn die Datei mit .txt im Namen nicht explizit beenden, wird es noch akzeptiert werden, aber Es muss immer noch eine Textdatei sein.

Antwort

0

Siehe JavaDoc für die Verwendung von FileFilter mit JFileChooser.

Sie müssen benutzerdefiniertes FileFilter implementieren, das nicht nur die Dateinamenerweiterung überprüft, sondern auch überprüft, ob Dateiinhalt ein Text ist.

1

Antwort, wie zu erkennen, ob eine Datei tatsächlich ist .txt Sie Apache Tika-Bibliothek verwenden können Datei für den

public static void main(String[] sss) { 

     try { 
     // System.out.println(ContainsMedia(new File("D:\\test"))); 

      Tika tika = new Tika(); 
      String contentTypeDetected = ""; 
      File dir = new File("D:\\test"); 
      for (String dir2 : dir.list()) { 
       try { 

        contentTypeDetected = tika.detect(new File(dir,dir2)); 
        System.out.println(contentTypeDetected); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

Ausgabe: text/plain , obwohl die Datei in diesem Verzeichnis Textdatei ist, aber ich umbenannte hier Datei und rar-Datei aber die apache Tikka die Wahrheit sagen zum Download .exe ist die Verbindung von Glas nach dem Download Apache tikka homepage

Zweitens es zu Ihrem classpath hinzufügen, wenn Sie ihn nur txt Dateityp wählen mögen kann

0 tun
fileChooser.setFileFilter(new FileFilter() { 

      @Override 
      public boolean accept(File f) { 
       if (f.isDirectory()) 
        return true; 
       String name = f.getName().toLowerCase(); 
       return name.endsWith(".txt") 
         ; 
      } 

      @Override 
      public String getDescription() { 
       return "only text file"; 
      } 
     }); 
0

Ja, es ist möglich.
Der JFileChooser bietet alles, was Sie brauchen.

Zum Beispiel:

jfc.setAcceptAllFileFilterUsed(false); 

    jfc.setFileFilter(new FileFilter() 
    { 
     @Override 
     public String getDescription() 
     { return "*" + fileExtension; } 

     @Override 
     public boolean accept(File f) 
     { 
      return f.isDirectory() || f.getName().toLowerCase().endsWith(fileExtension)); 
     } 
    }); 

(JFC ist das JFileChooser Objekt, erstellt vor.)

Dies ist ein wirklich einfaches Beispiel.
Wie Sie sehen können, müssen Sie einen neuen FileFilter hinzufügen, um Ihr Problem zu lösen.
Dieses Objekt bekam ein Verfahren „akzeptieren“, die nur einen Booleschen Wert zurückgibt
(ob es sich um eine „gültige Datei“ ist oder nicht.)

Aber Sie sollten die Java-Dokumentation über sie für alle Möglichkeiten prüfen .

Oder diese Tutorials von Oracle zur Verfügung gestellt verwenden:
http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

Btw. Sie können nicht sicherstellen, dass die ausgewählte Datei nur Text enthält.
Sie müssten dies später überprüfen.

Viel Glück!
(Es wird nicht so schwer zu erreichen sein; D)

+0

Vielen Dank für die Hilfe :) –

Verwandte Themen