Reputation: 2432
I have following chunk of code:
private void saveAs()
{
CDocument currentDocument=this.panelMain().openedDocuments().get(this.panelMain().openedDocuments().size()-1);
StyledDocument contents=currentDocument.getStyledDocument();
DefaultEditorKit kit=new DefaultEditorKit();
JFileChooser chooserSaveAs=new JFileChooser();
chooserSaveAs.setDialogTitle("Save as ...");
if(chooserSaveAs.showSaveDialog(this)==JFileChooser.APPROVE_OPTION)
{
String strNewFilename=chooserSaveAs.getSelectedFile().getName();
BufferedOutputStream out;
try
{
out=new BufferedOutputStream(new FileOutputStream(strNewFilename));
kit.write(out,
contents,
contents.getStartPosition().getOffset(),
contents.getLength());
out.close();
}
catch(IOException | BadLocationException ex)
{
Logger.getLogger(CFrameMain.class.getName()).log(Level.SEVERE,
null,
ex);
}
}
}
Once executed, this codes DOES NOT generate any exceptions, but I cannot find saved file on disk anywhere (I've searched through local disk with Total Commander). Why there is no file generated? I am currently working on Windows 7 Ultimate and I tried to save in to logged user's desktop (because of possible access violations problems ...)?
Upvotes: 0
Views: 1302
Reputation: 2432
No, but I've managed to fix it. I used @Tom's approach and it works! Here is the code chunk:
try
{
out=new BufferedOutputStream(new FileOutputStream(file));
kit.write(out,
contents,
contents.getStartPosition().getOffset(),
contents.getLength());
out.close();
}
catch(IOException | BadLocationException ex)
{
bError=true;
Logger.getLogger(CFrameMain.class.getName()).log(Level.SEVERE,
null,
ex);
}
finally
{
if(bError!=true)
{
currentDocument.setFilename(chooserSaveAs.getSelectedFile().getAbsolutePath());
this.toolBarFileSwitcher().listOpenedFiles().model().set(this.toolBarFileSwitcher().listOpenedFiles().getSelectedIndex(),
currentDocument.filename());
this.toolBarFileSwitcher().updateUI();
}
}
Upvotes: 0
Reputation: 44881
Get the File not the name and it should be saved to the right place.
Also you can log out the File's absolute path to see where it is.
File file =chooserSaveAs.getSelectedFile();
System.out.println(file.getAbsolutePath());
FileOutputStream fos = new FileOutputStream(file);
Upvotes: 5