如何使用bash将文件重定向为Java程序的输入?
我的代码大致如下所示:
InputStreamReader isReader = new InputStreamReader(System.in); BufferedReader bufReader = new BufferedReader(isReader); while (true) { try { String inputStr = null; if ((inputStr=bufReader.readLine()) != null) { //DO SOMETHING } else { System.out.println("input is null"); } } catch (Exception e) { //DO SOMETHING } }
当我跑
java -classpath ../src test.TestProgram < filename
它处理文件中的第一行,但它保持打印input is null
,永远不会进入第二行。
如何修改程序以告诉它让错误输入转到下一行?
PS:我需要进行的文件如下:
111111111 111111112 111111113 ...
我试过了
java -classpath ../src test.TestProgram < filename echo `cat filename` | java -classpath ../src test.TestProgram java -classpath ../src test.TestProgram <<< `cat filename`
他们都失败了
我的错…我在循环中放了“BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in))”谢谢大家!
您的代码实际上很好,它适用于Mac OSX Java 1.6.0。 我做了一些小改动:
public static void main(String[] args) { InputStreamReader isReader = new InputStreamReader(System.in); BufferedReader bufReader = new BufferedReader(isReader); while (true) { try { String inputStr = null; if ((inputStr = bufReader.readLine()) != null) { System.out.println(inputStr); } else { System.out.println("input is null"); return; //end on first null } } catch (Exception e) { e.printStackTrace(); } } }
我跑:
java Test.java < data.txt
它输出:
111111111 111111112 111111113 input is null
你是如何制作输入文件的? 也许你的线路结束是非标准的?
这是你的代码清理了一下:
public static void main(String[] args) { BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in)); String inputStr = null; try { while ((inputStr = bufReader.readLine()) != null) { System.out.println(inputStr); } } catch (Exception e) { e.printStackTrace(); } System.out.println("end of file"); }
java -classpath ../src test.TestProgram