2017-02-26 6 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に発生する、NullPointerを取得しています上記のプログラムを実行する必要があります。
  2. ファイルクラスでfileListメソッドを使用する方法はわかっていますが、ディレクトリ内のすべてのファイルを読み取ることができますし、文字列クラスでendsWithメソッドを使用できることもわかります。

しかし、上記の実装を使用してテキストファイル内のすべてのデータを読み取る方法を知りたがっています。

上記の方法を正しく処理する方法については、誰でも私にこのガイドを教えてください。

+1

あなたの問題はわかりませんが、このif(m.find()&& m.equals(s1));はバグです:コードブロックのない 'if'です。そのセミコロンを削除します。さらに、 'if'と' 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) 

あなたがこの問題を修正したら、ファイルの解析に移動します。

関連する問題