这是我第一次在linux上遇到Java的文件访问问题。 问题就像标题所示 – 当文件实际存在时抛出FileNotFoundException
。 而且,具有相同configuration(props.txt文件)的应用程序在Windows上应该可以运行。 让我提供一些控制台输出
datasu @ dedi2392:〜/ netcrawler / dkpto $ ls -l 共20个 -rwxrw-rw- 1 datasu datasu 114 Aug 7 15:53 autoupdate drwxr-xr-x 4 datasu datasu 4096 Aug 8 11:57 data drwxr-xr-x 2 datasu datasu 4096 Aug 8 11:57 log -rw-rw-rw- 1 datasu datasu 32 8月8日12:44 props.txt -rwxrw-rw- 1 datasu datasu 126 Aug 8 12:55 propsUpdate datasu @ dedi2392:〜/ netcrawler / dkpto $ ./propsUpdate 父:/ usr / home / datasu / netcrawler / dkpto 1# - >道具更新 2# - > autoupdate 3# - > props.txt 4# - >数据 5# - >日志 (没有这样的文件或目录)ava.io.FileNotFoundException:/usr/home/datasu/netcrawler/dkpto/props.txt 在java.io.FileInputStream.open(Native Method) 在java.io.FileInputStream。(Unknown Source) 在netcrawler.Autoupdater.readProperties(Autoupdater.java:71) 在netcrawler.Autoupdater.start(Autoupdater.java:54) 在netcrawler.Autoupdater.main(Autoupdater.java:47) datasu @ dedi2392:〜/ netcrawler / dkpto $ java -version java版本“1.6.0_45” Java(TM)SE运行时环境(版本1.6.0_45-b06) Java HotSpot(TM)64位服务器虚拟机(构build20.45-b01,混合模式) datasu @ dedi2392:〜/ netcrawler / DKPTO $
这里是负责生成该输出的Java代码(至less在调用./propsUpdate
)
private void readProperties(String args) throws FileNotFoundException, IOException { System.out.println("Parent: " + new File(args).getAbsoluteFile().getParentFile().getAbsolutePath()); CommonTools.PrintArray(new File(args).getAbsoluteFile().getParentFile().list()); properties.load(new FileInputStream(new File(args).getAbsoluteFile())); // this line throws the exception stageNumber = Integer.parseInt(properties.getProperty(PROP_STAGE_NUMBER_KEY, "0")); }
那么为什么props.txt
文件实际上没有find?
字符串“args”最后可能有一个非打印字符,就像一个空格。 在使用该变量之前,可以使用String.trim()来删除这些字符。
你的主文件夹真的是这个路径吗?
/usr/home/datasu
/home/datasu
是通常在linux上的地方。
另外,尝试改变这一行:
properties.load(new FileInputStream(new File(args));
如果您将其称为./propsUpdate ./props.txt
,它将从当前工作目录中运行。