首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Filewriter写入,但文件仍为空。

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

Stack Overflow用户
提问于 2014-07-03 06:55:28
回答 3查看 431关注 0票数 0

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

代码语言:javascript
复制
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();
    }
}
EN

回答 3

Stack Overflow用户

发布于 2014-07-04 18:35:07

养成在try-with-resources语句中创建所有Writer、Reader、InputStreams和OutputStreams的习惯。它确保它们将被适当地关闭:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-07-03 07:05:26

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

代码语言:javascript
复制
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();
}
票数 0
EN

Stack Overflow用户

发布于 2018-10-24 19:00:45

代码语言:javascript
复制
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();
                }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24542375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档