【问题标题】:Searching for a file with .java extension搜索扩展名为 .java 的文件
【发布时间】:2010-02-06 18:45:09
【问题描述】:

有什么方法可以首先过滤所有扩展名为“java”的文件,然后搜索找到一些具有该扩展名的文件?你能用sn-p代码解释一下吗?谢谢

【问题讨论】:

  • 希望这个网站在我还是学生的时候就存在。到目前为止,“约翰娜”已回答 160 个作业问题。
  • 大声笑...我必须阅读这本书才能完成我的作业!
  • 我们只能希望教授们也知道这个网站。我想这就是为什么我面试的求职者 100% 没用的原因?
  • 与这种想法相反,学生(大多数时候)得到了可能的最佳答案,这也提高了学习质量。
  • @murali - 给学生一个问题的正确答案并不能帮助她学会自己找出答案。幸运的是,家庭作业作弊者和死记硬背的人最终会在一次彻底的工作面试中陷入困境。但直到他们浪费了数千美元的大学学费等,才试图购买他们的 IT“餐券”。

标签: java file search


【解决方案1】:

我也投票给 Apache Commons。

http://www.kodejava.org/examples/359.html 给出了一个用法示例:

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();
        }
    }
}

【讨论】:

  • 你知道如何使用这段代码搜索所有内存吗?而不是一个目录?文件根 = new File("c:/");实际上不起作用。
【解决方案2】:

在 Unix 上你可以试试find <dir> -name '*.java' -exec grep <search string> {} \;

【讨论】:

  • 我怀疑她的作业问题涉及编写一些 Java 代码来完成这项工作。
  • www.betterthangrep.com - 'ack' 是一个比上面更强大的代码搜索工具。推荐。
  • 我使用grep <query> $( find <dir> -name *.java | xargs ),如果有很多 java 文件会更糟,但在 IDE 外输入时会稍微快一些
【解决方案3】:

如果您需要在 Java 中执行此操作,最简单的方法是使用 Apache Commons IO,尤其是 FileUtils.iterateFiles()

话虽如此,如果这是一个家庭作业问题,我怀疑你会因为使用上述内容而获得很多分数。我怀疑作业的目的是测试你编写递归例程的能力(那里有一个线索!)——而不是找到第 3 方库(记住,这本身就是一项有价值的技能)。

【讨论】:

    【解决方案4】:

    使用 GitHub 上的 FileSearcher.java 可以轻松实现这一点

    在整个计算机中查找所有 .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 来轻松搜索当前文件夹或当前文件夹 + 子文件夹。

    希望对你有帮助!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 2017-12-16
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多