如何在java中读取文件时转义以特殊字符开头的行

时间:2012-10-29 19:43:51

标签: java file io escaping

假设文件包含以下行:

#Do
#not
#use
#these
#lines.

Use
these.

我的目标是只读取那些不以#开头的行。如何在Java中最佳地完成这项工作?

3 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

使用String.startsWith()方法。在你的情况下,你会使用 if(!myString.startsWith("#")) { //some code here }

答案 2 :(得分:0)

BufferedReader.readLine()返回一个String。您可以使用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);
        }
    }
}