0

ファイルに次の行が含まれているとします。

#Do
#not
#use
#these
#lines.

Use
these.

私の目的は、で始まらない行だけを読み取ることです#。これをJavaで最適に行うにはどうすればよいですか?

4

3 に答える 3

2

行を累積したいとしましょう (もちろん、行ごとにすべてを行うことができます)。

String filePath = "somePath\\lines.txt";

// Lines accumulator.
ArrayList<String> filteredLines = new ArrayList<String>();

BufferedReader bufferedReader = null;
try {
    bufferedReader = new BufferedReader(new FileReader(filePath));
    String line;

    while ((line = bufferedReader.readLine()) != null) {
        // Line filtering. Please note that empty lines
        // will match this criteria!
        if (!line.startsWith("#")) {
            filteredLines.add(line);
        }
    }
}
finally {
    if (bufferedReader != null)
        bufferedReader.close();
}

Java 7の try-with-resourcesステートメントの使用:

String filePath = "somePath\\lines.txt";
ArrayList<String> filteredLines = new ArrayList<String>();

try (Reader reader = new FileReader(filePath);
    BufferedReader bufferedReader = new BufferedReader(reader)) {

    String line;
    while ((line = bufferedReader.readLine()) != null) {
        if (!line.startsWith("#"))
            filteredLines.add(line);
    }
}
于 2012-10-29T20:02:05.740 に答える
1

メソッドを使用しString.startsWith()ます。あなたの場合、あなたは使用します if(!myString.startsWith("#")) { //some code here }

于 2012-10-29T19:46:25.807 に答える
0

BufferedReader.readLine() は文字列を返します。#その行がstring.startsWith()を使用して始まるかどうかを確認できます

FileReader reader = new FileReader("file1.txt");
    BufferedReader br  = new BufferedReader(reader);
    String line="";
    while((line=br.readLine())!=null){
        if(!line.startsWith("#")){
            System.out.println(line);
        }
    }
}
于 2012-10-29T19:47:13.730 に答える