无法将所有数据写入txt文件

时间:2014-10-10 22:20:02

标签: java eclipse

我在将数据写入.txt文件时遇到问题。它不会将所有数据写入我的.txt文件。我已经尝试过把所有东西放在一个数组中,但这也行不通。

我的代码:

 BufferedWriter writer = null;

    try {
        String line;
        Process p = Runtime.getRuntime().exec("ps -A -o pid");
        BufferedReader input =
                new BufferedReader(new InputStreamReader(p.getInputStream()));
        while ((line = input.readLine()) != null) {

              writer = new BufferedWriter(new FileWriter(" the path .."));
              writer.write(line);
            System.out.println(line);

        }
        writer.close();
        input.close();

    } catch (Exception err) {
        err.printStackTrace();
       System.out.println("Sorry!");
    }

它只写入控制台的最后一行。

1 个答案:

答案 0 :(得分:6)

通过在循环的每次迭代期间重新创建对象而不关闭它,您将丢弃到目前为止所写的内容(您必须使用writer.close()来保存使用该对象编写的内容)。 / p>

您需要在循环之前声明 writer ,因此请将其更改为以下内容

BufferedWriter writer = null;

    try {
        String line;
        Process p = Runtime.getRuntime().exec("ps -A -o pid");
        BufferedReader input =
                new BufferedReader(new InputStreamReader(p.getInputStream()));
        writer = new BufferedWriter(new FileWriter(" the path .."));
        while ((line = input.readLine()) != null) {

              writer.write(line);
            System.out.println(line);

        }
        writer.close();
        input.close();

    } catch (Exception err) {
        err.printStackTrace();
       System.out.println("Sorry!");
    }

我可以问一下,为什么每次迭代都会重新声明 writer 对象?