2013-08-31 2 views
23

Я сделал маленький файл писатель:Java: FileWriter: Создать новую строку

try { 
     FileWriter writer = new FileWriter(new File("file.txt"), false); 
     try { 
      String sizeX = jTextField1.getText(); 
      String sizeY = jTextField2.getText(); 
      writer.write(sizeX); 
      writer.write(sizeY); 
      writer.flush(); 
      writer.close(); 
     } catch (NumberFormatException e) { 
     } 
    } catch (IOException ex) { 
    } 

Теперь я хочу, чтобы сделать новую линию, так же, как вы можете сделать это с «\ п» нормально, но он, похоже, не работает ...

Кто-нибудь знает, как сделать такую ​​новую строку?

Заранее благодарен! :)

+0

'writer.write (" \ n ");' –

+1

'но, похоже, не работает', можете ли вы опубликовать полученные результаты? – Pshemo

+1

Если я попробую метод «\ n», ничего нет ... только 1254 (12 для sizeX, 54 для sizeY) ... – lukulus

ответ

43

Если вы хотите получить новые строки символы, используемые в текущей ОС, как \r\n для Windows, вы можете получить их

  • System.getProperty("line.separator");
  • так Java7 System.lineSeparator()
  • или как упомянуто Стюартом генерировать их через String.format("%n");

Вы также можете использовать PrintStream и его метод println который добавит отделитель OS зависимой строки в конце вашей строки автоматически

PrintStream fileStream = new PrintStream(new File("file.txt")); 
fileStream.println("your data"); 
//   ^^^^^^^ will add OS line separator after data 

(BTW System.out также экземпляр PrintStream).

5

Попробуйте обертывание ваш FileWriter в BufferedWriter:

BufferedWriter bw = new BufferedWriter(writer); 
bw.newLine(); 

Javadocs для BufferedWriter here.

19

Попробуйте System.getProperty("line.separator")

writer.write(System.getProperty("line.separator")); 
0

Я хотел бы решить проблему следующим образом:

BufferedWriter output; 
    output = new BufferedWriter(new FileWriter("file.txt", true)); 
    String sizeX = jTextField1.getText(); 
    String sizeY = jTextField2.getText(); 
    output.append(sizeX); 
    output.append(sizeY); 
    output.newLine(); 
    output.close(); 

Истинный в конструкторе FileWriter позволяет добавлять.
Метод newLine() предоставляется BufferedWriter
Может быть в порядке как решение?

1

Если вы имеете в виду один и тот же код, но добавляете новую строку, чтобы при добавлении чего-то в файл она будет на новой строке. Вы можете просто использовать BufferedWriter's newLine().
Здесь я также улучшил ваш код: NumberFormatException не нужно, поскольку ничто не было передано типу данных числа, и сохранение переменных, которые нужно использовать один раз, также было.

try { 
    BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt")); 
     writer.write(jTextField1.getText()); 
     writer.write(jTextField2.getText()); 
     writer.newLine(); 
     writer.flush(); 
     writer.close(); 
} catch (IOException ex) { 
    System.out.println("File could not be created"); 
} 
0

Здесь «\ n» также работает нормально. Но проблема здесь заключается в текстовом редакторе (вероятно, в блокноте). Попробуйте увидеть выход с помощью Wordpad.

+0

Умный! Работал для меня и должен работать на задания. Однако для проекта следует использовать любой из указанных выше подходов –

4

С 1.8, я думал, что это может быть дополнительным решением стоит добавлять к ответам:

Путь java.nio.file.Files.write (путь Путь, Iterable линии, OpenOption ... варианты) бросает IOException

StringBuilder sb = new StringBuilder(); 
sb.append(jTextField1.getText()); 
sb.append(jTextField2.getText()); 
sb.append(System.lineSeparator()); 
Files.write(Paths.get("file.txt"), sb.toString().getBytes()); 

Если добавление в тот же файл, возможно, использовать флаг Append с Files.write()

Files.write(Paths.get("file.txt"), sb.toString().getBytes(), StandardOpenOption.APPEND); 
Смежные вопросы