带换行符的java Bash输入重定向
因此,对于学校的作业,我需要用java编写一个程序来管理大学的一些学生,用户可以调用许多函数,但我从测试“add”开始
我的教授建议我使用输入重定向,因为我可以轻松地反复测试程序,而无需大量输入。现在问题来了
echo `< input.txt`
add Student Name 123 Street,City,Province,Postal Code q
#Input rediraction ate my newlines
cat input.txt
add
Student Name
Street,City,Province,Postal Code
q
#What I actually want to run
java -cp . TestCollege < input.txt #fail horribly
正如您所见,bash删除了我用来分隔输入的换行符,因此我的程序崩溃,因为当您在交互模式下运行它时,Scanner。getLine()会一直阻塞,直到出现输入
如果我知道如何用换行符给程序输入,它在windows“cmd”中似乎可以正常工作,但在“bash”中却不行
# 1 楼答案
好吧,你可以看到bash是如何不吃新线的
我想这会给你带来你期望的价值
# 2 楼答案
你能试着把
BufferedInputStream
包装在System.in
周围吗,因为它可以处理两种情况:\r\n
和\n
;我想这就是你的问题所在或者更确切地说,在
Scanner
上调用useDelimiter(System.getProperty("line.separator"))