0

我有一個文件夾裏面的用戶,我有這麼多文件具有相同的擴展名。 我想用查詢過濾器來查找所有的用戶文件名。檢索具有相同擴展名的文件數

在下面的代碼中,我如何檢索所有等於查詢過濾器的文件。

public Collection<User> findUsers(String filter) { 

    List<User> filteredList = new ArrayList<User>(); 
    try { 
     FileInputStream fileInputStream = new FileInputStream("Path of file"); 
     ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); 
     Object object = objectInputStream.readObject(); 

     while (object.equals(filter)) { 
      filteredList.add((User)object); 
      object = objectInputStream.readObject(); 
     } 
     objectInputStream.close(); 
     } 
     catch(Exception ioEx){ 
      //.............. 
     } 
    } 
    return filteredList; 
} 

感謝您的任何幫助。

+1

您的代碼不符合您的問題。您是否正在嘗試讀取文件夾中的文件或序列化流中的對象? – chrylis

+0

@chrylis:是的我正在嘗試讀取文件夾中的文件並想要反序列化它們。 – AskQuestion

回答

0

這裏是小片段,幫助您:

File folder = new File("/Users/you/folder/"); 
File[] listOfFiles = folder.listFiles(); 
List<String> filteredList = new ArrayList<String>(); 

for (File file : listOfFiles) { 
    // Be aware that folder.listFiles() give list with directories and files 
    if (file.isFile()) { 
     System.out.println(file.getName()); 

     // apply your filter. for simplicity I am equating the file names 
     // name refers to input variable to method 
     if(file.getName().toLowerCase().contains(name.toLowerCase())) { 
      // create user object and add it to list. 
      // Change below line with appropriate constructor params 
      filteredList.add(file.getName()) 
     } 
    } 
} 
+0

幾乎有幫助,但沒有得到最後一行。 – AskQuestion

+0

我不確定你的應用程序中的User類是什麼。我簡化了使用字符串的答案。 –

+0

我已經改變了條件來檢查包含邏輯而不是等於,所以它應該工作。 –

0

步驟1: 獲取文件名

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

第2步:有名字存儲在某些集合對象 第3步:遍歷集合對象,並找到您要

現在任何過濾器,是你的概率創造這樣的過濾器?

+0

是的,我可以,但首先我需要一個更好的解釋,你要如何比較,然後你的努力,你已經嘗試了你的努力 –

相關問題