如何将错误从控制台复制到文件,以及在哪里包含代码以及代码是什么



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);

最新更新