Hinzufügen .txt-Erweiterung im JFileChooser
Habe ich eine Methode, die den text aus einer JTextArea erstellen Sie eine Datei, und schreiben Sie text auf es als code unter:
public void createTxt() {
TxtFilter txt = new TxtFilter();
JFileChooser fSave = new JFileChooser();
fSave.setFileFilter(txt);
int result = fSave.showSaveDialog(this);
if(result == JFileChooser.APPROVE_OPTION) {
File sFile = fSave.getSelectedFile();
FileFilter selectedFilter = fSave.getFileFilter();
String file_name = sFile.getName();
String file_path = sFile.getParent();
try{
if(!sFile.exists()) {
sFile.createNewFile();
BufferedWriter out = new BufferedWriter(new FileWriter(sFile));
out.write(jTextArea1.getText());
out.close();
JOptionPane.showMessageDialog(null, "Warning file • " + file_name + " • created succesfully in \n" + file_path);
} else {
String message = "File • " + file_name + " • already exist in \n" + file_path + ":\n" + "Do you want to overwrite?";
String title = "Warning";
int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
if(reply == JOptionPane.YES_OPTION){
sFile.delete();
sFile.createNewFile();
BufferedWriter out = new BufferedWriter(new FileWriter(sFile));
out.write(jTextArea1.getText());
out.close();
JOptionPane.showMessageDialog(null, "File • " + file_name + " • overwritten succesfully in \n" + file_path);
}
}
}
catch(IOException e) {
System.out.println("Error");
}
}
}
- und txt-Datei-filter
public class TxtFilter extends FileFilter{
@Override
public boolean accept(File f){
return f.getName().toLowerCase().endsWith(".txt")||f.isDirectory();
}
@Override
public String getDescription(){
return "Text files (*.txt)";
}
}
Den Dateifilter für txt funktioniert gut, aber das, was ich will, ist zu ergänzen ".txt" - Erweiterung geben, wenn ich die Datei name.
Wie muss ich ändern, meinen code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
UPDATE
Sie wies mich heraus, dass die überprüfung der vorhandenen Dateien funktioniert nicht. Tut mir Leid, ich wollte nicht daran denken, wenn ich Ihnen vorgeschlagen, zu ersetzen, die
BufferedWriter
Linie.Nun, ersetzen Sie diese:
mit:
Mit diesem Ersatz, es ist nicht erforderlich, ersetzen Sie die Zeile
BufferedWriter
hinzufügen.txt
für die Erweiterung. Dann ersetzen Sie diese Zeile mit der Zeile in den code, den Sie geschrieben (mitBufferedWriter out = new BufferedWriter(new FileWriter(sFile));
stattBufferedWriter out = new BufferedWriter(new FileWriter(sFile+".txt"));
).Nun sollte das Programm wie erwartet funktioniert.
Ich vergaß zu erwähnen, dass Sie haben, um kommentieren Sie die Zeile:
Auf diese Weise, erstellen Sie eine leere Datei mit der Klasse
File
.Nur nach dieser Zeile, es ist:
BufferedWriter out = new BufferedWriter(new FileWriter(sFile));
.Mit dieser Linie, erstellen Sie wieder die gleiche Datei. Der schreiben-Vorgang geschieht zwei mal! Ich denke, es ist sinnlos, fügen Sie zwei Anweisungen, die tun die gleiche Aufgabe.
Auch, auf die
BufferedWriter
Konstruktor können Sie eine Zeichenfolge angefügt, die für die Datei-Namen (es ist nicht möglich, aufFile
Konstruktor), das ist der Grund, warum ich fügte hinzu+".txt"
(Erweiterung) umsFile
.Ich habe gerade diesen
Dies ist eine utility-Funktion aus einem meiner Programme, die Sie verwenden können, anstelle von
JFileChooser.getSelectedFile
, um die Erweiterung zu.Ich getan habe, diese Funktion für diesen Zweck :
Dann können Sie die Funktion zum Beispiel in dieser Weise :