0

我正在阅读一个文件,其中一个段落由换行符分隔。

Line 1
Line 2
Line 3

Line 4
Line 5
Line 6

在这里,我阅读了第 1、2、3 行,然后是第 4、5、6 行。

while (there are still more paragraphs) {
  String paragraph = new Scanner(new File("testdata.txt")).useDelimiter("\n\n").next();
}

分隔符“\n\n”用于识别段落而不是行。现在,分隔符在少数系统中可以变为“\r\n\r\n”,而在其他少数系统中可以变为“\n\n”。有没有办法在运行时识别并使用它?我正在寻找类似的东西:

String delimiter = getNewLineCharYourself();
String paragraph = new Scanner(new File("testdata.txt")).useDelimiter(delimiter).next();
4

4 回答 4

6

你正在寻找

System.getProperty("line.seperator");
于 2013-07-23T14:38:16.337 回答
2

看一下这个:

String newLine = String.format("%n"); 
//       %n becomes newline     ^^

或者:

System.getProperty("line.separator");

或者,在 Java 7 中:

System.lineSeparator();

从这里:如何获得依赖于平台的换行符?

于 2013-07-23T14:40:38.933 回答
0

您可以直接抓取整个文件,然后拆分数据:

for ( String line : "the entire file".split( System.getProperty("line.separator") )
{
     System.out.println( line );
}

是通用换行符。

另一种方法:

BufferedReader bufferedReader = new BufferedReader( new FileReader( "absolute file path" ) );

String line;

while ( ( line = bufferedReader.readLine() ) != null)
{
     System.out.println( line );
}
于 2013-07-23T14:41:45.597 回答
0

jlordo 说什么。或使用BufferedReader

File file = new File("myFile.txt");
if (file.exists() && file.canRead()) {
    BufferedReader br = null;
    try {
        br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        String line = null;
        while ((line = br.readLine())!= null) {
            if (!line.trim().isEmpty()) {
                // TODO something with your line
            }
        }
    } 
    catch (Throwable t) {
        // TODO handle this
        t.printStackTrace();
    }
    finally {
        // attempting to close
        if (br != null) {
            try {
                br.close();
            }
            catch (Throwable t) {
                t.printStackTrace();
            }
        }
    }
}
于 2013-07-23T14:44:16.860 回答