如何将stdin和stdout重定向到java中的文本文件

时间:2014-05-27 10:04:06

标签: java

如何重定向stdin和stdout以将数据作为文本文件的输入并将数据作为输出传递给另一个文本文件。

我的输入和输出文件如下所示。

输入File.txt

1 2 3

输出应该是输入文件中数字的总和。

输出File.txt

6

3 个答案:

答案 0 :(得分:6)

您不必在Java中执行此操作,您可以从运行Java应用程序的shell执行此操作:

# cat input.txt | java -jar myapp.jar > output.txt

然后,Java代码可以从System.in读取并写入System.out。

答案 1 :(得分:4)

您可以将System.outSystem.in设置为文件路径。然后你现有的代码应该工作

System.setIn(new FileInputStream(new File("input.txt")));
...
//read from file
.... 

System.setOut(new PrintStream(new File("filename.txt")));
System.out.println(sum); // will be printed to the file    

答案 2 :(得分:0)

这是一个基于反射的解决方案,其中包含来自@ sidgate答案的部分代码:

import java.lang.reflect.Method;

public class Driver {

    public static void main(String[] args) throws Exception {

        runSolution("utopiantree");
    }

    private static void runSolution(String packageName) throws Exception{

        System.setIn(Driver.class.getClassLoader().getResourceAsStream(packageName + ".tc"));
        Method mainMethod = Class.forName(packageName + ".Solution").getMethod("main", new Class[]{String[].class});
        mainMethod.setAccessible(true);
        mainMethod.invoke(null, new Object[]{new String[0]});
    }
}