2010-02-06 49 views
1

有沒有什麼辦法可以首先過濾擴展名爲「java」的所有文件,然後搜索找到一些帶有擴展名的文件?你可以用代碼片段感謝正在尋找擴展名爲.java的文件

+10

希望這個網站是當我還是學生時。迄今爲止爲「Johanna」回答的160個作業問題。 – Pool 2010-02-06 18:55:39

+1

LOL ...我不得不讀這本書來完成我的功課! – cx0der 2010-02-06 18:57:27

+2

我們只能希望教授也瞭解這個網站。我想這就是爲什麼我面試的求職者中約有100%是無用的? – 2010-02-06 19:09:04

回答

1

在Unix上解釋一下嗎?你可以嘗試find <dir> -name '*.java' -exec grep <search string> {} \;

+1

我懷疑她的作業問題涉及編寫一些Java代碼來完成這項工作。 – Pointy 2010-02-06 18:49:40

+0

www.betterthangrep.com - 'ack'是一個比上面更強大的代碼搜索工具。推薦的。 – 2010-02-06 19:36:24

+0

我使用'grep $(找到

-name * .java | xargs)',如果有很多java文件,這會更糟糕,但是在IDE外出時鍵入會更快一些 – tucuxi 2015-05-21 17:18:05

0

如果你需要做到這一點在Java中,最簡單的方法是使用Apache Commons IO,特別是FileUtils.iterateFiles()。如果這是一個家庭作業問題,我懷疑你會得到很多使用上述的標記。我懷疑作業的目的是測試你編寫遞歸例程的能力(這裏有個線索!) - 找不到第三方庫(本身就是一個有價值的技巧,頭腦)。

3

我也投票支持Apache Commons。

http://www.kodejava.org/examples/359.html gves的使用例子:

package org.kodejava.example.commons.io; 

import org.apache.commons.io.FileUtils; 

import java.io.File; 
import java.util.Collection; 
import java.util.Iterator; 

public class SearchFileRecursive { 
    public static void main(String[] args) { 
     File root = new File("/home/foobar/Personal/Examples"); 

     try { 
      String[] extensions = {"xml", "java", "dat"}; 
      boolean recursive = true; 

      // 
      // Finds files within a root directory and optionally its 
      // subdirectories which match an array of extensions. When the 
      // extensions is null all files will be returned. 
      // 
      // This method will returns matched file as java.io.File 
      // 
      Collection files = FileUtils.listFiles(root, extensions, recursive); 

      for (Iterator iterator = files.iterator(); iterator.hasNext();) { 
       File file = (File) iterator.next(); 
       System.out.println("File = " + file.getAbsolutePath()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

你知道如何搜索全部內存,使用這個代碼?而不是一個目錄? File root = new File(「c:/」);實際上不工作。 – Doszi89 2012-11-13 14:04:26

0

這是使用FileSearcher.java輕鬆上GitHub

找到你的整個計算機的所有.java文件會是什麼樣子的例子發現:

public class FindDotJava { 
    public static void main(String[] args) { 
     ArrayList<File> dotJavaFiles = FileSearcher.findFiles(FileSearcher.SEARCH_EVERYTHING, "java"); 
    } 
} 

您可以輕鬆地通過將SEARCH_EVERYTHING更改爲當前文件夾或當前文件夾+子文件夾來搜索CURRENT_FOLDER或SUBFOLDERS_AND_CURRENT。

我希望這有助於!