import java.io.BufferedReader;
导入 java.io.Console;
导入java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
导入java.nio.file.Paths;
公共类日志文件{
public static void main(String[] args( 抛出 FileNotFoundException{
尝试
{
字符串[] 命令 = {"cmd","/c", "dir/p"};
final File outputFile = Paths.get("c://users//sihi//logfile.txt", args(.toFile((;
final ProcessBuilder pb =new PrrocessBuilder(command(.redirectOutput(outputFile(.redirectErrorStream(true(;
final Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String Error;
while ((Error = stdError.readLine()) != null) {
System.out.println(Error);
}
while ((Error = stdInput.readLine()) != null) {
System.out.println(Error);
}
} catch (Exception e) {
e.printStackTrace();
} } }
您使用了ProcessBuilder
并且已经将输出重定向到文件:
final File outputFile = Paths.get("c://users//sihi//logfile.txt", args).toFile();
final ProcessBuilder pb = new ProcessBuilder(commands)
.redirectOutput(outputFile).redirectErrorStream(true);
只是从outputFile
中阅读...
此外,您使用Java 7,因此:
for (final String line: Files.readAllLines(yourPath, StandardCharsets.UTF_8))
System.out.println(line);
由于这是Java 7,因此不是为输出创建File
,而是创建一个Path
并使用.toFile()
:
final Path path = Paths.get("c://users//sihi//logfile.txt", args);
final ProcessBuilder pb = new ProcessBuilder(commands)
.redirectOutput(path.toFile()).redirectErrorStream(true);
final Process p = pb.start();
p.waitFor(); // throws InterruptedException
for (final String line: Files.readAllLines(path, StandardCharsets.UTF_8))
System.out.println(line);