首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BufferedWriter防止覆盖

BufferedWriter防止覆盖
EN

Stack Overflow用户
提问于 2019-05-21 10:37:35
回答 3查看 48关注 0票数 0

我有一个BufferedWriter,它已经写入文件,但不是以我想要的方式写入文件。我在一个循环中初始化它,导致它只追加循环的最后一个结果以被添加到文件中。实际上,这对我来说是可以的,但是文件中先前的结果会被删除。我希望在不删除之前的结果的情况下添加结果。

为了不总是在循环中创建缓冲阅读器的新实例,我尝试创建静态缓冲阅读器。但这是不可能的,因为你需要一个“尝试”块。

代码语言:javascript
复制
public void actionPerformed(ActionEvent e) {
            String s;
            try {
                if (parseInt(jTextFieldNumber.getText()) == random) {
                    info.setText("Attempt # " + counter + ": " + 
parseInt(jTextFieldNumber.getText()) + " ==> correct!");
                    ok.setEnabled(false);
                } else if (parseInt(jTextFieldNumber.getText()) < random) 
{
                    info.setText("Attempt # " + counter + ": " + 
parseInt(jTextFieldNumber.getText()) + " ==> too small!");
                } else {
                    info.setText("Attempt # " + counter + ": " + 
parseInt(jTextFieldNumber.getText()) + " ==> too big!");
                }
            } catch (NumberFormatException nfe) {
                nfe.printStackTrace();
                System.exit(0);
            }
                s = jTextFieldName.getText() + " " + counter;
                BufferedWriter bw;
                try {
                    bw = new BufferedWriter(new 
FileWriter("C:\\wrk\\SapCommerceCloud\\src\\SwingUni\\events1\\name"));
                    bw.append(s);
                    if(info.getText().equals("Attempt # " + counter + ": 
" + parseInt(jTextFieldNumber.getText()) + " ==> correct!")){
                        bw.close();
                    }
                } catch (IOException io) {
                    io.printStackTrace();
                }
            counter++;
        }
    };
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-21 10:46:26

FileWriter有一个构造函数public FileWriter(String fileName, boolean append) throws IOException。如果您使用true作为附加,文件将不会被覆盖参见FileWriter的javadoc

对您来说,更好的解决方案可能是使用one FileWriter。

票数 0
EN

Stack Overflow用户

发布于 2019-05-21 10:44:15

我认为您是在询问如何附加到文件中,即使您正在创建新的BufferedWriters。

使用第二个参数为true的文件编写器,如下所示:

代码语言:javascript
复制
try {
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true)));
    out.println("the text");
    out.close();
} catch (IOException e) {
    //exception handling left as an exercise for the reader
}

参考:如何将文本附加到Java中的现有文件

票数 1
EN

Stack Overflow用户

发布于 2019-05-21 10:43:24

使用

代码语言:javascript
复制
 bw = new BufferedWriter(new 
FileWriter("C:\\wrk\\SapCommerceCloud\\src\\SwingUni\\events1\\name", true));

调用此构造函数测试

代码语言:javascript
复制
FileWriter(String fileName, boolean append)
Constructs a FileWriter object given a file name with a boolean indicating whether or not to append the data written.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56236458

复制
相关文章

相似问题

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