Java 在运行时确定换行符

Java 在运行时确定换行符,java,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(); } delimeter \n \n用于识别段落而不是行。现在,

我正在读一个文件,一段一段用换行符隔开

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();
}
delimeter \n \n用于识别段落而不是行。现在,分隔符可以在少数系统中更改为\r\n\r\n,在其他少数系统中更改为\n\n。有没有办法在runtine识别并使用它?我正在寻找类似于:

String delimiter = getNewLineCharYourself();
String paragraph = new Scanner(new File("testdata.txt")).useDelimiter(delimiter).next();
你在找什么

System.getProperty("line.seperator");
看看这个:

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

或者,在Java 7中:

System.lineSeparator();

从此处开始:

您只需按原样抓取整个文件,然后拆分数据:

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 );
}

杰洛多说的。或者使用BufferedReader:


检测操作系统并使用\r\n仅限AFAIK Windows使用的操作系统,或者在适当的时候使用?@m0skit0不要重新发明轮子。检查下面的答案。@LuiggiMendoza谁说他必须自己实施?这只是一个暗示;或System.lineSeparator+1应将问题标记为重复,而不是重复答案!你完全正确,为什么不使用try-with-resources最终摆脱这种混乱局面?@jlordo,因为我使用的是java6:D
BufferedReader bufferedReader = new BufferedReader( new FileReader( "absolute file path" ) );

String line;

while ( ( line = bufferedReader.readLine() ) != null)
{
     System.out.println( line );
}
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();
            }
        }
    }
}