[英]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.