【问题标题】:Program doing overwriting [duplicate]程序进行覆盖[重复]
【发布时间】:2013-11-26 03:13:57
【问题描述】:

我正在制作一个接受 10 个字符串并将它们发送到文本文件的程序。但是,我的问题是它只是覆盖了文件中存在的任何先前值。任何想法如何防止它被覆盖? 我的程序如下:

import java.io.*;
public class TEST
{
    public static void main(String args[])throws IOException
    {
        InputStreamReader read=new InputStreamReader(System.in);
        BufferedReader in=new BufferedReader(read);
        int a;
        String x;
        for (a=1; a<=10; a++)
        {
            System.out.println("Please enter a word.");
            x=in.readLine();
            PrintStream konsole = System.out;
            System.setOut(new PrintStream("TEST.txt"));
            System.out.println(x);
            System.setOut(konsole);
        }
        System.out.println("DONE");
    }
}

【问题讨论】:

  • 不,这不是那个问题的重复!我在请人调试我的程序!
  • @user2987896 不要要求别人调试你的程序,我们不是你的编译器/调试器。对于代码审查,有一个单独的站点。保持友善并表现出努力,人们会帮助您。开始争论,事情就从那里付诸东流。除此之外,欢迎来到 Stack Overflow。
  • @Matthias 抱歉!我不知道这个!你能告诉我网站名称吗?
  • @user2987896 看看这里:codereview.stackexchange.com我在这个网站上不活跃,请务必阅读他们的关于和帮助页面,以确保您在那里的问题与主题有关。跨度>

标签: java io bufferedreader bluej inputstreamreader


【解决方案1】:

尝试写入输出流(不是重定向的System.out)。

使用FileOutputStreams,您可以选择是要追加到文件还是写入新文件(构造函数中的布尔值,请查看JavaDoc)。 尝试使用此代码为文件创建一个输出流,该文件不会覆盖该文件,而是附加到该文件。

OutputStream out = new FileOutputStream(new File("Test.txt"), true);

还要确保不要在循环的每次迭代中创建 Stream,而是在循环开始时创建。

如果你在循环之后也关闭了输出流(在 finally 块中),那么你应该没问题。

【讨论】:

    【解决方案2】:

    这应该适合你:

    public static void main(String[] args) throws IOException {
    
        InputStreamReader read=new InputStreamReader(System.in);
        BufferedReader in=new BufferedReader(read);
        OutputStream out = new FileOutputStream(new File("TEST.txt"), true);
    
        for (int a=1; a<=10; a++)
        {
            System.out.println("Please enter a word.");
            out.write(in.readLine().getBytes());
            out.write(System.lineSeparator().getBytes());
        }
    
        out.close();
        System.out.println("DONE");
    }
    

    【讨论】:

    猜你喜欢
    • 2018-03-28
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多