2013-07-23 3 views
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(); 
} 

разделители "\ п \ п", чтобы определить пункт, а не линию. Теперь разделитель может меняться на «\ r \ n \ r \ n» в нескольких системах и «\ n \ n» в других немногих. Есть ли способ идентифицировать его в runtine и использовать его? Я ищу что-то вроде:

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

Обнаружение ОС и использование '\ г \ n' (который использует AFAIK только Windows) или' \ n', когда это необходимо? – m0skit0

+1

@ m0skit0 не изобретать колесо. Проверьте ответ ниже. –

+1

@LuiggiMendoza Кто сказал, что он должен был реализовать его сам? Это всего лишь подсказка;) – m0skit0

ответ

6

Вы ищете

System.getProperty("line.seperator"); 
+1

или 'System.lineSeparator()' anyway +1 – Pshemo

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

должен помечать вопрос как дубликат, а не дублировать ответы! – DannyMo

+0

Вы совершенно правы – jsedano

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); 
} 
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(); 
      } 
     } 
    } 
} 
+0

Почему вы не используете 'try with resources', чтобы избавиться от этого беспорядка в' finally'? – jlordo

+0

@jlordo, потому что я использую Java 6: D – Mena

Смежные вопросы