2010-09-23 2 views
0

У меня есть путь к каталогу, передаваемый как аргумент в программе Java, и каталог имеет различные типы файлов. Я хочу получить путь к текстовым файлам, а затем добавить каждый текстовый файл. Я новичок в Java, любая рекомендация, как это сделать?Retrieveing ​​путь к текстовым файлам в Каталоге с использованием Java

+0

Попробуйте приведенные ниже предложения и отправьте исходный код, если вам нужна дополнительная помощь. –

ответ

0

Начинать с чтения File API. Вы можете создать файл из строки и даже определить, exists() или isDirectory(). Также как список детей в этом каталоге.

1

Создайте объект File, представляющий каталог, затем используйте один из методов list() или listFiles() для получения дочерних элементов. Вы можете передать им фильтр, чтобы управлять возвращаемым.

Например, listFiles() method below вернет массив файлов в каталоге, принятом фильтром.

public File[] listFiles(FileFilter filter) 
2

Даже если это не оптимальное решение, вы можете использовать его в качестве отправной точки.

import java.io.File; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class DirectoryWalker { 

    /** 
    * @param args 
    */ 
    private String extPtr = "^.+\\.txt$"; 
    private Pattern ptr; 
    public DirectoryWalker(){ 
     ptr = Pattern.compile(extPtr); 
    } 
    public static void main(String[] args) { 
     String entryPoint = "c:\\temp"; 
     DirectoryWalker dw = new DirectoryWalker(); 
     List<String> textFiles = dw.extractFiles(entryPoint); 
     for(String txtFile : textFiles){ 
      System.out.println("File: "+txtFile); 
     } 
    } 

    public List<String> extractFiles(String startDir) { 

     List<String> textFiles = new ArrayList<String>(); 

     if (startDir == null || startDir.length() == 0) { 
      throw new RuntimeException("Directory entry can't be null or empty"); 
     } 

     File f = new File(startDir); 
     if (!f.isDirectory()) { 
      throw new RuntimeException("Path " + startDir + " is invalid"); 

     } 

     File[] files = f.listFiles(); 
     for (File tmpFile : files) { 
      if (tmpFile.isDirectory()) { 
       textFiles.addAll(extractFiles(tmpFile.getAbsolutePath())); 
      } else { 
       String path = tmpFile.getAbsolutePath(); 
       Matcher matcher = ptr.matcher(path); 
       if(matcher.find()){ 
        textFiles.add(path); 
       } 
      } 
     } 

     return textFiles; 
    } 
} 
Смежные вопросы