使用ProcessBuilder
我可以将流程的标准输入重定向到文本文件。当我运行流程时System.in
是此文件的流,Scanner
将读取其行。
但是,如果我在Intellij中通过Run
直接运行我的主类,我是否也可以将System.in
设置为指向与通过流程构建器运行时相同的文本文件?
答案 0 :(得分:1)
您可以致电System.setIn(InputStream)
重新分配"标准"输入流。像,
try {
File file = new File("c:/log.txt");
InputStream fileIn = new FileInputStream(file);
System.setIn(fileIn);
} catch (Exception e) {
e.printStackTrace();
}
答案 1 :(得分:1)
我理论,System.in
是InputStream
,您应该可以打开FileInputStream
,然后使用System.setIn
向其传递参考
我说,"理论上"因为我这样做是谨慎的,事实上我要做的第一件事就是获得原始System.in
InputStream
的引用并在完成后重置它,因为我和#39;像那样挑剔