Java无法在CentOS 6.5中打开文件

时间:2014-03-11 16:06:31

标签: java centos

我试图运行一个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线params在两种情况下都能正确显示。 我想知道shell是否实际上为这些参数添加了一些有趣的看不见的字符。

1 个答案:

答案 0 :(得分:0)

正如您在文件列表中看到的那样,只有root作为写入文件的权限。这也意味着只有root才能打开它。

我认为你的应用程序没有以root身份运行,因此你应该首先尝试更改文件的权限:

  

chmod 666此命令将允许每个人读取和写入文件。

此致

相关问题