[英]Java can't open file in CentOS 6.5
我正在尝试运行一个Java命令提示符程序,该程序接收5GB csv文件的路径。 虽然路径肯定是正确的,但我以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是否实际上在向这些参数添加了一些有趣的看不见的字符。
正如您在文件列表中看到的那样,只有root才具有在文件上写入的权利。 这也意味着只有根可以打开它。
我认为您的应用程序未以root用户身份运行,因此您应该首先尝试更改文件的权限:
chmod 666
该命令将允许所有人读取和写入文件。
真诚的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.