2015-11-02 87 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上的當前工作目錄下啓動,則一切正常,如果從另一個驅動器啓動,則不會找到該文件。

相關問題