2012-01-19 117 views

回答

10

你可以使用filenamefilter類這是很簡單的使用 公共靜態無效的主要(字串[] args)拋出IOException異常{

File f = new File("c:\\mydirectory"); 

    FilenameFilter textFilter = new FilenameFilter() { 
     public boolean accept(File dir, String name) { 
      return name.toLowerCase().endsWith(".txt"); 
     } 
    }; 

    File[] files = f.listFiles(textFilter); 
    for (File file : files) { 
     if (file.isDirectory()) { 
      System.out.print("directory:"); 
     } else { 
      System.out.print("  file:"); 
     } 
     System.out.println(file.getCanonicalPath()); 
    } 

} 

只是創建一個filenamefilter實例的覆蓋accept方法,你想怎麼

+0

+1是第一個提及的['FilenameFilter'](http://docs.oracle.com/javase/7/docs/api/java/io/FilenameFilter.html)。 –

1

您需要閱讀directory並在其中迭代。

更假設你已經在目錄上的Java訪問文件系統比約MVC

+0

該目錄位於客戶端,這不起作用。 – Manish

2

一個問題,你可以做這樣的事情:

File directory= new File("user submits directory"); 
for (File file : directory.listFiles()) 
{ 
    if (FileNameUtils.getExtension(file.getName()).equals("txt")) 
    { 
     //dom something here. 
    } 
} 

的FileNameUtils.getExtension( )可以找到here

編輯:你似乎想要做的是從Web瀏覽器訪問文件結構。根據this之前的SO帖子,由於安全原因,你想要做的事情是不可能的。

+0

該目錄在客戶端,這是行不通的。 – Manish

+0

這有效,當用戶選擇一個文件時,將路徑傳遞給文件構造函數 –

+0

這隻有在選定的文件夾位於服務器端時才起作用(這似乎不是這裏的情況)。您不能從服務器端訪問客戶端的文件夾。 – Manish

1

我寫了下面的函數來搜索目錄中的所有文本文件。

public static void parseDir(File dirPath) 
    { 

     File files[] = null; 
     if(dirPath.isDirectory()) 
     { 
      files = dirPath.listFiles(); 
      for(File dirFiles:files) 
      { 

       if(dirFiles.isDirectory()) 
       { 
        parseDir(dirFiles); 
       } 
       else 
       { 
        if(dirFiles.getName().endsWith(".txt")) 
        { 
         //do your processing here.... 
        } 
       } 
      } 

     } 
     else 
     { 
      if(dirPath.getName().endsWith(".txt")) 
      { 
       //do your processing here.... 
      } 
     } 

    } 

看看這是否有幫助。

1

提供一個文本框給用戶輸入目錄的路徑。

File userDir=new File("userEnteredDir"); 
File[] allfiles=useDir.listFiles(); 

迭代allFiles過濾使用的.txt文件getExtension()方法

相關問題