簡體   English   中英

Java無法在CentOS 6.5中打開文件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM