Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi @ all!!
Ich hab folgende Frage:
Ich möchte gern, dass mein Programm Daten in einer csv Datei abspeichert. Wenn ich eine vorhandene Datei anwähle, soll gefragt werden, ob sie überschrieben werden soll. Wenn man den Namen angibt, wird sie neu angelegt.
Folgendes hab ich schon hinbekommen:
Code:
JFileChooser datei = new JFileChooser();
datei.setDialogTitle("Speichern");
datei.setDialogType(JFileChooser.SAVE_DIALOG);
datei.setFileFilter(new FileFilter(){
public boolean accept(File f) {
return f.isDirectory() || f.getName().endsWith(".csv");
}
public String getDescription() {
return ".csv";
} });
int state = datei.showSaveDialog(null);
if ( state == JFileChooser.APPROVE_OPTION ){
BufferedWriter output;
try {
output = new BufferedWriter(new FileWriter(datei.getSelectedFile()));
for(int i=0;i<string.length;i++){
output.write(string[i]);
output.newLine();
}
output.close();
//System.out.print("erfolgreich " + datei.getSelectedFile().getName() + " im Verzeichnis " +datei.getSelectedFile().getAbsolutePath() + " angeleget");
} catch (IOException e1) {
e1.printStackTrace();
}
}
else{
JOptionPane error = new JOptionPane();
error.showMessageDialog( new JFrame(), "Es wurde nicht gespeichert", "Die Auswahl wurde abgebrochen", JOptionPane.ERROR_MESSAGE);
Hier wird nach drücken des Speichern Buttons eine Datei angelegt, wenn sie aber schon existiert wird sie überschrieben. Das will ich durch eine Abfrage auffangen, kann mir dabei jemand helfen??
if ( state == JFileChooser.APPROVE_OPTION )
{
if (datei.getSelectedFile().exists())
{
Object[] options = {"Jau, ersetz mal...", "Nee, lass mal lieber..."};
int auswahl = JOptionPane.showOptionDialog(frame, "Soll die vorhandene Datei ersetzt werden?", "Datei existiert bereits...", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
// den rest findest allein raus oder weisst es bereits --> API ansehen
}
...
Hey danke, Faulheit war das nicht, ich hab ziemliche Probleme mit den ganze JOptionPanes, bin noch totaler Noob und das erschlägt einen immer ziemlich!! Aber habs hinbekommen
Hier ist der fertige funktionierende Quelltext, falls jemand auch solche Probleme hat:
Code:
if ( state == JFileChooser.APPROVE_OPTION ){
BufferedWriter output;
try { //Datei neu anlegen
if(!datei.getSelectedFile().exists()){
output = new BufferedWriter(new FileWriter(datei.getSelectedFile()));
for(int i=0;i<string.length;i++){
output.write(string[i]);
output.newLine();
}
output.close();
}
else{
//vorhandene Datei überschreiben
Object[] options = {"Ja", "Nein"};
int auswahl = JOptionPane.showOptionDialog(new JFrame(), "Soll die vorhandene Datei ersetzt werden?", "Datei existiert bereits...", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
if(auswahl== 0){
output = new BufferedWriter(new FileWriter(datei.getSelectedFile()));
for(int i=0;i<string.length;i++){
output.write(string[i]);
output.newLine();
}
output.close();
}
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
else{
JOptionPane error = new JOptionPane();
error.showMessageDialog( new JFrame(), "Es wurde nicht gespeichert", "Die Auswahl wurde abgebrochen", JOptionPane.ERROR_MESSAGE);
}