我在将数据写入.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!");
}
它只写入控制台的最后一行。
答案 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 对象?