2014-03-26 80 views
1

我正在從計算機上的文件夾中獲取文件列表,並將其放入名爲listOfFiles的數組中。在目錄列表數組中找到一個字符串

我想嘗試使用字符串在文件夾中查找文件名。

  • 如果它發現我需要它說「匹配」的文件
  • 如果沒有找到該文件(現在這正在發生),它說:「不匹配」

我的代碼目前一直說它是「不匹配」,即使我已經使用了我正在搜索的確切文件名。

代碼:

File folder = new File(txtPDFLocation.getText()); 
File[] listOfFiles = folder.listFiles(); 

for (int i = 0; i < listOfFiles.length; i++) { 
    if (listOfFiles[i].isFile()) { 
     System.out.println(listOfFiles[i].getName()); 
    } 
    else if (listOfFiles[i].isDirectory()) { 
     System.out.println("Directory " + listOfFiles[i].getName()); 
    } 
} 

//Try to match file to email address 
if(Arrays.asList(listOfFiles).contains("Text1.txt")) { 
    System.out.println("MATCH"); 
} 
else { 
    System.out.println("NOT MATCHED"); 
} 

控制檯:

Text1.txt 
NOT MATCHED 
+0

「contains」區分大小寫,您確定名稱完全相同嗎? – libik

+0

嘿,是的名字是完全一樣的。 –

+0

使用'getname'方法,並將'File'對象的名稱放入'listofFiles'中到'list'中。 – YaleCheung

回答

1

您必須手動循環利用。

您可以創建新的for-loops,或者甚至可以在現有的for循環中進行檢查。

這裏是工作示例:

File folder = new File(""); 
File[] listOfFiles = folder.listFiles(); 

boolean isItThere = false; 
for (File file : listOfFiles) { 
    if (file.isFile()) { 
     if (file.getName().equals("Text1.txt")) { 
      isItThere = true; 
     } 
     System.out.println(file.getName()); 
    } else if (file.isDirectory()) { 
     System.out.println("Directory " + file.getName()); 
    } 
} 

//Try to match file to email address 

if (isItThere) { 
    System.out.println("MATCH"); 
} else { 
    System.out.println("NOT MATCHED"); 
} 
1

listOfFiles是類型的文件,而不是字符串

+0

有沒有辦法將它傳遞給一個字符串? –

0

你必須保持這些文件作爲字符串的名稱。假設您正在搜索不包含任何具有相同名稱的文件的文件夾。所以也許使用HashSet或Map更容易。他們得到了contains()方法並通過O(1)中的Table進行查找。

相關問題