【发布时间】:2014-03-12 00:29:44
【问题描述】:
我正在尝试运行一个接收 5GB csv 文件路径的 java 命令提示程序。 虽然路径保证是正确的,并且我以 root 身份运行程序,但我的程序抛出:
(No such file or directory)ava.io.FileNotFoundException: /data/tmp/NPPES/npidata.csv
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at java.io.FileReader.<init>(FileReader.java:58)
...
java 行是:
BufferedReader file = new BufferedReader( new FileReader(args[1]));
文件列表:
-rw-r--r-- 1 root root 4 Mar 11 15:35 empty.csv
-rw-r--r-- 1 root root 5097950480 Feb 11 00:36 npidata.csv
然后我认为这可能是文件大小,所以我创建了一个 4 个字符的文件。依然没有。 有没有人碰巧遇到过这种情况?
更新:
我修改了java程序以列出所有接收参数并且它们显示正确。
我通过 shell 脚本 launch.sh 运行程序,内容如下:
#!/bin/sh
#echo on
java -Xmx16000M -XX:MaxPermSize=512M -classpath "../classes:../lib/*" $@
当我直接用 java 运行它时,它工作了:找到了文件。
最大的谜团是 cmd 行参数在这两种情况下都正确显示。 我想知道 shell 是否真的在这些参数中添加了一些有趣的看不见的字符。
【问题讨论】: