使用Filewriter写入但文件仍为空。

时间:2014-07-02 22:55:28

标签: java

我有以下代码写入三个文件。我在写之前打印了Strings以确保它们中有一些数据,打印的字符串显示通过调用此函数给出的数据,但是在创建文件时文件是空的。 请提出建议。

public static void save(String editedFileText,String srcFileText,String translFileText)throws IOException { 
JFileChooser chooser = new JFileChooser();
System.out.println(editedFileText);
System.out.println(srcFileText);
System.out.println(translFileText);
int retrival = chooser.showSaveDialog(null);
if (retrival == JFileChooser.APPROVE_OPTION) {
try {
        FileWriter edit = new FileWriter(chooser.getSelectedFile()+".txt");
        edit.write(editedFileText.toString());
       FileWriter srcFile = new  FileWriter(chooser.getSelectedFile()+"_srcText"+".txt");
        srcFile.write(srcFileText.toString());
        FileWriter trans = new FileWriter(chooser.getSelectedFile()+"_translFile"+".txt");
       trans.write(translFileText.toString());
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

3 个答案:

答案 0 :(得分:1)

养成在try-with-resources语句中创建所有Writers,Readers,InputStreams和OutputStreams的习惯。它确保它们将被正确关闭:

try (FileWriter edit = new FileWriter(chooser.getSelectedFile()+".txt")) {
    edit.write(editedFileText);
}
try (FileWriter srcFile = new FileWriter(chooser.getSelectedFile()+"_srcText"+".txt")) {
    srcFile.write(srcFileText);
}
try (FileWriter trans = new FileWriter(chooser.getSelectedFile()+"_translFile"+".txt")) {
    trans.write(translFileText);
}

如果您只是编写一个字符串,则可以选择使用Files.write,这样您就可以完全放弃使用Writer:

Files.write(Paths.get(chooser.getSelectedFile()+".txt"),
            editedFileText.getBytes());
Files.write(Paths.get(chooser.getSelectedFile()+"_srcText"+".txt"),
            srcFileText.getBytes());
Files.write(Paths.get(chooser.getSelectedFile()+"_translFile"+".txt"),
            translFileText.getBytes());

答案 1 :(得分:0)

添加finally以关闭已打开的文件,但首先您需要在try catch finally之外声明它们:

FileWriter edit,srcFile, trans;
edit = srcFile = trans = null;
try {
    edit = new FileWriter(chooser.getSelectedFile()+".txt");
    edit.write(editedFileText.toString());
    srcFile = new  FileWriter(chooser.getSelectedFile()+"_srcText"+".txt");
    srcFile.write(srcFileText.toString());
    trans = new FileWriter(chooser.getSelectedFile()+"_translFile"+".txt");
    trans.write(translFileText.toString());
} catch (Exception ex) {
    ex.printStackTrace();
}finally{
    if(edit != null)
       edit.close();

    if(srcFile != null)
       srcFile.close();

    if(trans != null)
       trans.close();
}

答案 2 :(得分:0)

FileWriter writer=null;
        try {
             writer = new FileWriter(filename);
            writer.write(sb.toString());
        } catch (Exception e) {

        } finally {
            if (writer != null)
                try {
                    writer.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }