2011-03-08 40 views
-1

任何人都可以帮助编写java来处理具有多个文件的文件夹中的每个单词文件。如何处理Java中的文件集

+6

能否请您解释正是你想做的事,和准确你坚持哪些点? – tgdavies 2011-03-08 12:29:50

回答

0

要处理目录中的所有文件,您可以使用apache commons IO库。清单由扩展过滤(如果你想有只字的文件)目录下的所有文件看起来是这样的:

URI dirUri = "your dir as uri"; 
Collection<File> files = FileUtils.listFiles(dirUri,new String[] {"doc"}, false); 

for(File file : files){ 
    process(file); 
} 

您可以通过使用

YourClass.class.getResource(resName); 
创建一个目录名 URI

其中resName是一个classpath的相对路径的目录

+0

-1为什么在标准Java库中存在此功能时使用Apache Commons? – 2011-03-08 12:54:36

+1

@Erik Robertson:因为它的简洁。其他solurions需要额外的类或循环,而commonsIO解决方案是单线。它不像它从来没有人听说过的那种深奥的自由。大多数问题都可以通过单独的香草SE来解决,并且或多或少需要额外的工作。你是否因为某种原因而不喜欢公用事业单位? -1似乎有点严厉顺便说一句。 – kostja 2011-03-08 13:05:42

1

下议院IO是一种方式,但你可以做到这一点没有任何库:

public void processFilesIn(File folder){ 
    File[] contents = folder.listFiles(); 

    int file = 0; 
    while(file < contents.length){ 
     process(contents[file]); 
     file++; 
    } 
} 

private void process(File f){ 
    if(f.isDirectory()){ //Recursively descend into any folders - optional. 
     processFilesIn(f); 
    } 
    else if(canProcess(f)){ //Write boolean canProcess(File f) so you don't try to process files you aren't interested in. 
     //do processing 
    } 
} 

你会调用这个像这样:processFilesIn(new File("/path/to/folder"));

0

您可以使用文件过滤器(以下非递归的例子):

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

for (File f : new File("c:").listFiles(filter)) { 
    processWordFile(f); 
}