【发布时间】:2015-12-20 01:23:06
【问题描述】:
我的代码正在创建空文本文件,尽管我尝试使用用于小数据输出的相同代码
文本文件输出应该是这样的
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();
}
}
}
【问题讨论】:
-
不要关闭/打开循环内的编写器,您最终会覆盖之前迭代中的所有内容。此外,您可能不会从您的进程中获得任何输入,因为您正在与执行进程相同的线程中读取流,这意味着当您到达它时流将是空的。在单独的线程中调用阅读器。
标签: java file-io bufferedreader