2017-02-26 34 views
0

給定一個目錄中的多個文件如何使用正則表達式在Java中讀取多個文本文件中的數據?

我必須從目錄中只讀取文本文件並打印其中的所有信息。

我的實現:

File filepath=new File("c:/test"); 
Pattern p=Pattern.compile("[a-zA-Z0-9_]+.txt"); 
String s1[]=filepath.list(); 
for (int i=0;i<s1.length;i++){ 
Matcher m=p.matcher(s1[i]); 
if(m.find()&&m.equals(s1)); 
System.out.println(s1[i]); 
File file1=new File(s1[i]); 
readFromFile(file1);  
} 

static void readFromFile(File filename) throws IOException{ 
String line = null;  
FileReader fileReader = new FileReader(filename); //1 

BufferedReader bufferedReader = new BufferedReader(fileReader); 
while((line = bufferedReader.readLine()) != null) { 
System.out.println(line); 
    } 
    bufferedReader.close(); 
    fileReader.close(); 

} 
  1. 在運行上面的程序我在位置1獲得空指針在代碼中表示。
  2. 雖然我知道在文件類中使用fileList方法的方法,但我可以讀取目錄中的所有文件,並且我也知道我可以在String類的只讀文本文件中使用endsWith方法。

但我想知道如何使用上述實現我可以讀取文本文件中的所有數據。

任何人都可以指導我如何正確處理上述方法。

+1

我不知道你的問題,但是這個'if(m.find()&& m.equals(s1));'是錯誤的:它是一個沒有代碼塊的if。刪除該分號。此外,您可能需要在'if'和'for for'循環結束之間的所有內容的括號。 – Bohemian

回答

1

讀取文件時可能有問題。

:當打開文件進行讀取或寫入(也用於讀取目錄) 總是捕獲並打印例外 -

要了解什麼問題,你到底有 - 「找不到文件」或可能「讀取權限不足」

public static void main (String[] args) { 
    readFromFile(new File("nonexistant.txt")); 
} 

public static void readFromFile(File file) { 
    try (FileReader fileReader = new FileReader(file); 
     BufferedReader bufferedReader = new BufferedReader(fileReader)) { 
     for (String line = bufferedReader.readLine(); 
      line != null; 
      line = bufferedReader.readLine()) { 

      System.out.println(line); 
     } 
    } catch (Exception ex) { 
      System.err.print(ex); 
    } 
} 

prints the reason

java.io.FileNotFoundException: nonexistant.txt (No such file or directory) 

一旦你已經修復了這個問題,移動到文件的解析。

相關問題