2013-09-02 3 views
2

Я искал вокруг, но не мог найти то, что мне нужно. Я пишу простой код, чтобы сохранить некоторые строки в файле .txt.Java fileOutputStream

Я использую:

File archivo = new File(FileName); 
fileOutputStream.write(toString().getBytes()); 
fileOutputStream.flush(); 

Когда я делаю это .txt будет успешно создали и сохранить информацию мне нужно сохранить, но сохранить все в 1 одной огромной номенклатурой. Как я могу сохранить его в разных направлениях?

пример, когда я открываю ТХТ:

This is line 1This is line 2This is line 3This is line 4 

У меня есть добавить «\ п» в конце каждой строки, но он не работает.

toString() возвращает строку: «Это строка 1»; ОС: Windows 7

+0

Что является результатом метода 'ToString()'? Можете ли вы показать нам код этого метода? – LaurentG

+0

Вы работаете в ОС Windows? – Dev

+1

Проверьте это: http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#lineSeparator%28%29 – blgt

ответ

4

Вы можете попробовать сделать что-то вроде этого:

public void write(final File file, final List<String> lines) throws IOException{ 
    final BufferedWriter writer = new BufferedWriter(new FileWriter(file)); //new FileWriter(file, true) if you want to append the file (default is false) 
    for(final String line : lines){ 
     writer.write(line); 
     writer.newLine(); 
    } 
    writer.flush(); 
    writer.close(); 
} 

Если вы используете Java 8, не стесняйтесь попробовать использовать лямбды:

public void write(final File file, final List<String> lines) throws IOException{ 
    final BufferedWriter writer = new BufferedWriter(new FileWriter(file)); //new FileWriter(file, true) if you want to append the file (default is false) 
    lines.forEach(
      l -> { 
       try{ 
        writer.write(l); 
        writer.newLine(); 
       }catch(IOException ex){ 
        ex.printStackTrace(); 
       } 
      } 
    ); 
    writer.flush(); 
    writer.close(); 
} 

Для использования, вы могли бы попробуйте это:

write(new File(fileName), Arrays.asList("This is line 1", "This is line 2", "This is line 3", "This is line 4"));

+0

Спасибо, это сработало! –

0

U se System.getProperty («line.separator»), который будет возвращать последовательность, используемую операционной системой для разделения строк в текстовых файлах.

Попробуйте вот так.

File archivo = new File(FileName); 
fileOutputStream.write(toString().getBytes()); 
fileOutputStream.write(System.getProperty("line.separator").getBytes()); 
fileOutputStream.flush(); 

Ref: http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

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