java代码从本地系统搜索所有.doc和.docx文件

Tom*_*man 5 java search swing desktop-application

我正在使用java的Windows版桌面应用程序.在我的应用程序中,需要从本地系统中搜索MyDocuments/Documents(根据操作系统)中的所有.doc和.docx文件,并显示其名称和文件大小.

我没有得到帮助我列出所有*.doc,*.docx,*.xls,*.xlsx,*.csv,*.txt,*.pdf,*.ppt,*.pptx的方式Documents/MyDocuments中存在的文件.

请给我你宝贵的建议或建议我任何链接,以帮助我编写代码,以便更快地搜索和列出其名称,大小和类型.

Séb*_*nec 8

您可以使用Apache Commons IO,特别是FileUtils类.这将给出类似的东西:

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

import org.apache.commons.io.*;
import org.apache.commons.io.filefilter.*;

public class SearchDocFiles {
    public static String[] EXTENSIONS = { "doc", "docx" };

    public Collection<File> searchFilesWithExtensions(final File directory, final String[] extensions) {
        return FileUtils.listFiles(directory,
                extensions,
                true);
    }

    public Collection<File> searchFilesWithCaseInsensitiveExtensions(final File directory, final String[] extensions) {
        IOFileFilter fileFilter = new SuffixFileFilter(extensions, IOCase.INSENSITIVE);
        return FileUtils.listFiles(directory,
                fileFilter,
                DirectoryFileFilter.INSTANCE);
    }


    public static void main(String... args) {
        // Case sensitive
        Collection<File> documents = new SearchDocFiles().searchFilesWithExtensions(
                new File("/tmp"),
                SearchDocFiles.EXTENSIONS);
        for (File document: documents) {
            System.out.println(document.getName() + " - " + document.length());
        }

        // Case insensitive
        Collection<File> caseInsensitiveDocs = new SearchDocFiles().searchFilesWithCaseInsensitiveExtensions(
                new File("/tmp"),
                SearchDocFiles.EXTENSIONS);
        for (File document: caseInsensitiveDocs) {
            System.out.println(document.getName() + " - " + document.length());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)