2011-12-15 46 views
1

我想列出目錄中文件的數量。但我無法這樣做,我懷疑它與父目錄名稱中的空格有關。
什麼我做的是在.properties文件中我設置爲值 -目錄名中帶有空格的文件對象

dir.loc=H:/Main/dir one/dir - two/dir3/dir four 
dir.name=Run 

現在在java的文件,我設置這些值的字符串變量 -

String s1 = properties.getProperty("dir.loc"); 
String s2 = properties.getProperty("dir.name"); 

我創建了一個文件對象 -

File f = new File(s1, s2); 
File[] fList = f.listFiles(); 

現在,這裏的fListnull;
H驅動器在另一臺遠程機器上,我認爲java程序試圖在本地定位'運行'目錄,而不是在H驅動器上找到它,並且因爲它找不到'運行'列表返回null

當我在一個簡單的Java類嘗試作爲 -

File f = new File("H:/Main/dir one/dir - two/dir3/dir four", "Run"); 

然後我得到與f.listFiles().length;

所以結果我猜它可能必須做一些與提取值從屬性文件和分配給一個String變量。

我的假設是否正確?
這個問題有什麼可能的解決辦法?

+0

如何加載屬性以及`new File(s1,s2).getAbsolutePath()`的值是什麼? – 2011-12-15 10:38:35

+0

這就是'getAbsolutePath()`得到的打印爲'H:\ Main \ dir one \ dir - two \ dir3 \ dir four \ Run',我將屬性文件簡單地加載爲``properties.load(Thread。 currentThread).getContextClassLoader()。getResourceAsStream(「Test.properties」));` – 2011-12-15 10:49:20

+0

好吧,它似乎沒有什麼不同,在你的「直接」例子中,那有什麼奇怪的。在驅動器「H」上重新檢查您的訪問權限;此外,您可以嘗試設置UNC路徑(以\\ machine \ share \ target`的形式)。 – 2011-12-15 11:54:07

回答

1

好吧,我發現我的問題的解決方案,其實很簡單。
我做了以下 -

在屬性文件 -

dir.loc=H:/Main/dir one/dir - two/dir3/dir four/Run 

在配置的java文件 -

String s1 = properties.getProperty("dir.loc"); 

在我的java程序 -

File tempF = new File(s1); 
File dirLoc = new File(tempF.getAbsolutePath()); 

dirLoc.listFiles().length;給出一個號碼。

@barti_ddu關於getAbsolutePath()的評論讓我陷入了一些想法,可能會使用它。
這個解決方案有什麼問題,或者不太像樣?

謝謝大家。

2

是的,你是對的。當從屬性文件中讀取值時,就會搞亂數值。 而不是這樣做:

dir.loc="H:/Main/dir one/dir - two/dir3/dir four" 
0

它看起來像你只需要修剪你的屬性值。 在您顯示的代碼中,

dir.loc=H:/Main/dir one/dir - two/dir3/dir four 

有尾隨空格。

這是否:

String s1 = properties.getProperty("dir.loc").trim(); 
String s2 = properties.getProperty("dir.name").trim(); 

解決這個問題?

相關問題