java无法在centos 6.5中打开文件

tzxcd3kk  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(282)

我正在尝试运行一个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是否真的在那些参数中添加了一些有趣的看不见的字符。

ufj5ltwl

ufj5ltwl1#

正如您在文件列表中所看到的,只有根作为对文件的写入权限。也就是说只有根才能打开它。
我认为您的应用程序没有以root用户身份运行,因此您应该首先尝试更改文件的权限: chmod 666 这个命令将允许每个人读写文件。
真诚地,

相关问题