我正在阅读一个带有一个段落的文件,每次用换行符分隔。
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();
答案 0 :(得分:6)
您正在寻找
System.getProperty("line.seperator");
答案 1 :(得分:2)
检查出来:
String newLine = String.format("%n");
// %n becomes newline ^^
或者:
System.getProperty("line.separator");
或者,在Java 7中:
System.lineSeparator();
答案 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();
}
}
}
}