为什么在Linux上存在FileNotFoundException时抛出它

Ant*_*sss 5 java linux file

这是我第一次遇到Java上的Java文件访问问题.问题就像标题所说 - FileNotFoundException文件实际存在时抛出.此外,具有相同配置的应用程序(props.txt文件)在Windows上运行应该如此.让我提供一些控制台输出

datasu@dedi2392:~/netcrawler/dkpto$ ls -l
total 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 Aug  8 12:44 props.txt
-rwxrw-rw- 1 datasu datasu  126 Aug  8 12:55 propsUpdate
datasu@dedi2392:~/netcrawler/dkpto$ ./propsUpdate
Parent: /usr/home/datasu/netcrawler/dkpto
   1# -> propsUpdate
   2# -> autoupdate
   3# -> props.txt
   4# -> data
   5# -> log
 (No such file or directory)ava.io.FileNotFoundException: /usr/home/datasu/netcrawler/dkpto/props.txt
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.(Unknown Source)
        at netcrawler.Autoupdater.readProperties(Autoupdater.java:71)
        at netcrawler.Autoupdater.start(Autoupdater.java:54)
        at netcrawler.Autoupdater.main(Autoupdater.java:47)
datasu@dedi2392:~/netcrawler/dkpto$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
datasu@dedi2392:~/netcrawler/dkpto$

这里是负责生成输出的Java代码(至少在调用之后./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"));
}
Run Code Online (Sandbox Code Playgroud)

那么为什么props.txt文件在实际存在时找不到呢?

Ern*_*ill 7

字符串"args"可能在末尾有一个非打印字符,就像一个空格.在使用该变量之前,可以使用String.trim()删除此类字符.

  • 哇,现在那只是傻瓜.我在文件名中有一些空格等的双重检查午餐脚本,但没有任何东西.然而,修改这个论点就成了伎俩.谢谢你的建议.今天的课程:永远不要相信命令行传递的参数.有没有办法让VI,VIM显示非打印机? (2认同)