gpt4 book ai didi

java - 为什么我不能将所有行导出到文本文件?

转载 作者:行者123 更新时间:2023-11-30 08:09:06 24 4
gpt4 key购买 nike

我的代码正在创建空文本文件,尽管我尝试使用用于小数据输出的相同代码

文本文件输出应该是这样的

ClassMetrics 3 1 0 3 18 0 0 3 2 0.0000 66 1.0000 0 0.0000 0.5556 0 0 20.6667

~ void (): 1

~ public gr.spinellis.ckjm.ClassMetrics getMetrics(String arg0): 2

~ public void printMetrics(gr.spinellis.ckjm.CkjmOutputHandler arg0): 3

但是我得到一个空的文本文件

这是源码

package javaapplication11;

import java.io.*;

public class CmdTest {
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder("cmd.exe","/c",
"java -jar C:\\Users\\hp\\Desktop\\ckjm-1.99.jar C:\\Users\\hp\\Desktop\\*.class");

builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(
p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) {
break;
}
PrintWriter writer = new PrintWriter("C:\\Users\\hp\\Desktop\\result3.txt", "UTF-8");
// writer.println("\t\t\tWMC DIT NOC CBO RFC LCOM Ce NPM");
System.out.println(line);
writer.write(line);
writer.close();
}
}
}

最佳答案

问题是您在循环中反复打开和关闭编写器。每次创建编写器时,它都会覆盖输出文件之前的内容,因此该文件一次只包含一行。如果输入文件的最后一行恰好为空,则生成的输出文件也将为空。

如果你像这样改变你的 while 循环,它会正确运行:

PrintWriter writer = new PrintWriter("C:\\Users\\hp\\Desktop\\result3.txt", "UTF-8");
while (true) {
line = r.readLine();
if (line == null) {
break;
}
System.out.println(line);
writer.write(line);
}
writer.close();

好吧,如果一切顺利,上面的代码就可以运行。我们必须确保在发生错误时关闭编写器,为此有 try-with-resources陈述。真正正确的代码应该是这样的。

try (PrintWriter writer = new PrintWriter("C:\\Users\\hp\\Desktop\\result3.txt", "UTF-8"))
String line;
while ( (line = r.readLine()) != null) {
System.out.println(line);
writer.write(line);
}
}

关于java - 为什么我不能将所有行导出到文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32727486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com