在运行时确定换行符

时间:2013-07-23 14:37:13

标签: java

我正在阅读一个带有一个段落的文件,每次用换行符分隔。

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"在其他几个。有没有办法在runtine中识别它并使用它?我正在寻找类似的东西:

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

4 个答案:

答案 0 :(得分:6)

您正在寻找

System.getProperty("line.seperator");

答案 1 :(得分:2)

检查出来:

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

或者:

System.getProperty("line.separator");

或者,在Java 7中:

System.lineSeparator();

从这里开始:How do I get a platform-dependent new line character?

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

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