2015-11-02 59 views
-1

我应该说这段代码正在IBM JDK 7中运行。以下代码行引发FileNotFound异常。FileInputStream java.io.FileNotFoundException

properties.load(new FileInputStream("/myApp/properties/props.properties")); 

同样的代码行在我的同事电脑上工作正常。出于某种原因,在他们的机器上有一个隐含的C:,假设在该路径的前面,这是我需要在我的计算机上发生的事情。我们一直把我们的头脑融合在一起,但还没有找到解决问题的办法。

当我跑这条线

properties.load(new FileInputStream("C:\\myApp\\properties\\props.properties")); 

它工作正常,并不会引发错误。正如你所看到的,我已经特别将C:放在了路径中。我怎样才能得到第一行代码假设有一个隐含的C:

+1

你是说在你的同事的Windows机器上,新建的FileInputStream(“/ myApp/properties/props.properties”)行实际上加载了文件'C:\ myApp \ properties \ props.properties'?这将是非常奇怪的。 – Tunaki

+1

你应该使用'getResourceAsStream()'而不是像那样的绝对路径。 – Kayaman

+0

你如何开始你的程序?驱动器C上的当前工作目录? – Henry

回答

0

在Windows上,文件名/myApp/properties/props.properties不是绝对的,因为它没有指定驱动器号。操作系统将添加当前工作目录的驱动器,使其成为绝对文件名。

因此,如果程序在驱动器C上的当前工作目录下启动,则一切正常,如果从另一个驱动器启动,则不会找到该文件。