Я написал небольшую файловую книгу:
Теперь я хочу создать новую строку, так же, как вы можете сделать это с помощью »
» в обычном режиме, но, похоже, не работает.
Кто-нибудь знает, как сделать такую новую строку?
Если вы хотите получить новые строковые символы, используемые в текущей ОС, например
для 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.