我的代码中有一个我正在阅读的文本文件的硬编码名称。
String fileName = "test.txt";
但是我现在必须使用这样的命令参数:
text.java arg1 arg2 arg3 (can be any amount) < test.txt
有人可以帮我吗?
我得到的论点没问题,只是不确定文件。谢谢
我试过了:
String x = null;
try {
BufferedReader f = new BufferedReader(new InputStreamReader(System.in));
while( (x = f.readLine()) != null )
{
System.out.println(x);
}
}
catch (IOException e) {e.printStackTrace();}
System.out.println(x);
}
但是我的应用程序现在挂在readLine上,有什么想法让我试试吗?
答案 0 :(得分:2)
这是因为该文件不是传递作为参数,而是管道作为标准输入。
如果这是预期用途(用于管道文件的内容),则只需从System.in
(in
表示标准输入)读取它:
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String firstLine = in.readLine();
// etc.
}
如果你只想传递文件名,那么你必须删除或转义<
,因为它在shell中意味着“管道”。
答案 1 :(得分:0)
将文件作为文件名传递给您的程序,然后打开该文件并从中读取。