filewriter java перенос строки

Я написал небольшую файловую книгу:

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

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

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

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

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

1 Moe [2016-01-18 02:59:00]

Используя буферизатор, я анализирую файл. Если найден апельсины: шаблон, я хочу заменить его на ApplesAndOranges.

Я вызываю метод updateLine, и я передаю свою исходную строку, а также обновленное значение строки.

Чтобы получить файл для обновления, я должен сохранить его с другим именем (resourcesFilePath+ «. Out»). Если я использую исходное имя файла, сохраненная версия станет пустой.
Итак, вот мой вопрос: как я могу заменить строку любым значением в исходном файле без потери каких-либо данных.

java bufferedreader filewriter

3 ответа

0 JD9999 [2016-01-18 05:14:00]

Вы можете использовать RandomAccessFile для записи в файл, а nio.Files — для чтения байтов из него. В этом случае я помещаю его как строку.

Вы также можете прочитать файл с RandomAccessFile, но, на мой взгляд, это проще сделать так.

0 Orden [2016-01-18 03:22:00]

Для этого вам нужно использовать регулярные выражения (RegExp) следующим образом:

str = str.replaceAll(«^ Оранжевый: (. *)», «OrangeAndApples: $ 1»);

Это пример и, возможно, это не совсем то, что вы хотите, но здесь, в первом параметре, выражение в parentesis называется группой захвата. Выявленное выражение будет заменено вторым параметром, а значение $ 1 будет заменено значением группы захвата. В нашем примере Orange: Привет в начале строки будет заменен OrangeAndApples: Hello.

В вашем коде, это швы, вы создаете один файл на строку. возможно, вложение под-метода было бы лучше.

0 James Doe [2016-01-18 03:51:00]

Самый простой способ написать все в своем оригинальном финале — это прочитать во всем — изменить то, что вы хотите изменить и закрыть поток. Затем снова откройте файл, затем перезапишите файл и все его строки с нужными данными.

Я сделал небольшой файл writer:

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

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

8 ответов

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

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

вы также можете использовать PrintStream и println метод, который автоматически добавит разделитель зависимых от ОС строк в конце вашей строки

(кстати, System.out is также экземпляр PrintStream).

попробовать System.getProperty( «line.separator» )

попробуйте обернуть свой FileWriter на BufferedWriter :

Javadocs для BufferedWriter здесь.

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

путь java.НИО.файл.Файлы.write (путь пути, итерационные строки, OpenOption. options) бросает IOException

при добавлении к тому же файлу, возможно, используйте флаг добавления с файлами.написать ()

посмотреть этот вопрос для получения более подробной информации.

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

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

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

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

Оцените статью