- Как записать символ новой строки в файл в Java
- Create a new line in Java’s FileWriter
- 10 Answers 10
- Как осуществить запись в файл в Java
- Простой пример записи в файл в Java
- Рефакторинг
- Как записать Java в файл построчно
- Как осуществить запись в файл в Java
- Простой пример записи в файл в Java
- Рефакторинг
- Как записать Java в файл построчно
Как записать символ новой строки в файл в Java
У меня есть строка, содержащая новые строки. Я отправляю эту строку функции для записи строки в текстовый файл следующим образом:
public static void writeResult(String writeFileName, String text) < try < FileWriter fileWriter = new FileWriter(writeFileName); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter.write(text); // Always close files. bufferedWriter.close(); >catch(IOException ex) < System.out.println("Error writing to file '"+ writeFileName + "'");>> //end writeResult function
Но когда я открываю файл, я нахожу его без каких-либо новых строк. Когда я показываю текст на экране консоли, он отображается с новыми строками. Как написать новый символ строки в текстовом файле. EDIT: Предположим, что это аргумент text , который я отправил в вышеприведенную функцию:
I returned from the city about three o'clock on that may afternoon pretty well disgusted with life. I had been three months in the old country, and was
Как написать эту строку как есть (с новыми строками) в текстовом файле. Моя функция записывает строку в одну строку. Можете ли вы предоставить мне способ записать текст в файл, включая новые строки? ИЗМЕНИТЬ 2: Текст изначально находится в TXT файле. Я прочитал текст, используя:
while((line = bufferedReader.readLine()) != null) < sb.append(line); //append the lines to the string sb.append('\n'); //append new line >//end while
Если строка содержит символы новой строки, то и выходной файл будет. Следовательно, либо ваша строка не содержит символов новой строки, либо файл содержит. Как вы говорите, он отображается с помощью новых строк, он содержит новые строки. Так какой у тебя вопрос?
Это сработало для меня. Я просто вставил новый FileWriter (arquivo, true) логический атрибут, чтобы не удалять содержимое моего файла.
Create a new line in Java’s FileWriter
Now I want to insert a new line, just like you would do it with \n normally, but it doesn’t seem to work. What can be done to solve this? Thank you.
10 Answers 10
If you want to get new line characters used in current OS like \r\n for Windows, you can get them by
- System.getProperty(«line.separator»);
- since Java7 System.lineSeparator()
- or as mentioned by Stewart generate them via String.format(«%n»);
You can also use PrintStream and its println method which will add OS dependent line separator at the end of your string automatically
PrintStream fileStream = new PrintStream(new File("file.txt")); fileStream.println("your data"); // ^^^^^^^ will add OS line separator after data
(BTW System.out is also instance of PrintStream).
Try System.getProperty( «line.separator» )
writer.write(System.getProperty( "line.separator" ));
Try wrapping your FileWriter in a BufferedWriter :
BufferedWriter bw = new BufferedWriter(writer); bw.newLine();
Javadocs for BufferedWriter here.
Since 1.8, I thought this might be an additional solution worth adding to the responses:
Path java.nio.file.Files.write(Path path, Iterable lines, OpenOption. options) throws 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());
If appending to the same file, perhaps use an Append flag with Files.write()
Files.write(Paths.get("file.txt"), sb.toString().getBytes(), StandardOpenOption.APPEND);
Как осуществить запись в файл в Java
При написании программ на языке Java рано или поздно встанет необходимость чтения и записи информации в файл. Для этого в языке предусмотрены следующие инструменты для ввода и вывода данных: класс Writer для записи и Reader для чтения. Наследниками этих классов являются классы FileWriter и FileReader, удобные для работы непосредственно с файлами.
Простой пример записи в файл в Java
Перед тем как создавать точку входа в программу, нужно прописать импорты (необходимые классы находятся в библиотеке java.io*, пропишем звездочку, т. к. в дальнейшем понадобятся еще классы из этой библиотеки). Импорт в редакторе должен иметь такой вид:
Затем внутри произвольного класса пишем метод main, в котором в свою очередь создаем экземпляр класса FileWriter и записываем его в переменную write:
FileWriter writer = new FileWriter(«text.txt»);
При запуске этой программы будет создан файл text.txt в корне проекта. Для того чтобы записать что-нибудь в этот файл, нужно обратиться к методу write() класса Writer, метод write() принимает в качестве аргумента строку, напишем туда что-нибудь:
writer.write(«пример записи в файл в Java»);
При работе с вводом выводом данных необходимо также учитывать исключительные ситуации по причине того, что мы не всегда знаем, что будет в этих данных. Компилятор не пропустит данный код без специальной конструкции throws Exception, которую нужно вставить в сигнатуре метода main. Также нужно позаботиться о выходе из потока, после метода write() нужно закрыть поток при помощи метода close(). Как должен выглядеть код на этом этапе, показано на рисунке ниже.
При запуске программы в корне проекта появится файл text.txt, в котором будет написано «пример записи в файл в Java». Однако данный пример годится только для ознакомительных целей, чтобы применить его в «боевых» условиях нужно провести небольшой рефакторинг.
Рефакторинг
Первое, что нужно сделать, — заключить код, отвечающий за ввод вывод данных в конструкцию try — catch (так легче управлять исключениями и применять свои исключения). Затем нужно создать отдельную переменную с типом File, куда можно записать адрес и название файла (это удобно, т. к. часто нужно работать с несколькими файлами, их помещают в отдельные переменные и обрабатывают циклом, и только затем результирующая переменная вставляется как параметр в FileWriter).
Также хорошей практикой при работе с потоками ввода/вывода считается использование буфера (класс FileWriter обращается к диску, если данных много это может потребовать много памяти, поэтому разумно манипулировать данными, используя буфер), для этого применяется класс BufferedWriter, а FileWriter записывается в скобки в качестве параметра. Для освобождения буфера вызывается метод flush(), его можно прописать перед методом close(), теперь код будет выглядеть так, как показано ниже.
Как записать Java в файл построчно
Каждый раз при компиляции данного кода в консоли будет перезаписываться одна и та же запись. Как сделать так, чтобы при запуске программы в файл записывалась новая информация построчно? Для этого в первую очередь нужно написать ключевое слово true вторым параметром при создании FileWriter:
BufferedWriter writer = new BufferedWriter(new FileWriter(myFile, true));
Каждый раз при компиляции программа будет записывать в файл строку, которая находится в методе write(), без переноса на следующую строку. В нашем случае получилось так:
пример записи в Java пример записи в Java пример записи в Java
Простой способ переноса строки — это добавление оператора /n к строковому аргументу метода write(), однако такой способ не будет работать в разных операционных системах. Для того чтобы записать файл построчно на различных платформах, нужно использовать метод line.separator класса System. В следующем примере видно, как этот метод записать в переменную lineSeparator, которую потом можно использовать в строковом аргументе метода write():
String lineSeparator = System.getProperty(«line.separator»);
Окончательно код будет выглядеть так, как показано ниже.
Результат выполнения данного кода будет следующим: в файле text.txt при троекратном запуске программы появятся строки «пример записи в Java».
Как осуществить запись в файл в Java
При написании программ на языке Java рано или поздно встанет необходимость чтения и записи информации в файл. Для этого в языке предусмотрены следующие инструменты для ввода и вывода данных: класс Writer для записи и Reader для чтения. Наследниками этих классов являются классы FileWriter и FileReader, удобные для работы непосредственно с файлами.
Простой пример записи в файл в Java
Перед тем как создавать точку входа в программу, нужно прописать импорты (необходимые классы находятся в библиотеке java.io*, пропишем звездочку, т. к. в дальнейшем понадобятся еще классы из этой библиотеки). Импорт в редакторе должен иметь такой вид:
Затем внутри произвольного класса пишем метод main, в котором в свою очередь создаем экземпляр класса FileWriter и записываем его в переменную write:
FileWriter writer = new FileWriter(«text.txt»);
При запуске этой программы будет создан файл text.txt в корне проекта. Для того чтобы записать что-нибудь в этот файл, нужно обратиться к методу write() класса Writer, метод write() принимает в качестве аргумента строку, напишем туда что-нибудь:
writer.write(«пример записи в файл в Java»);
При работе с вводом выводом данных необходимо также учитывать исключительные ситуации по причине того, что мы не всегда знаем, что будет в этих данных. Компилятор не пропустит данный код без специальной конструкции throws Exception, которую нужно вставить в сигнатуре метода main. Также нужно позаботиться о выходе из потока, после метода write() нужно закрыть поток при помощи метода close(). Как должен выглядеть код на этом этапе, показано на рисунке ниже.
При запуске программы в корне проекта появится файл text.txt, в котором будет написано «пример записи в файл в Java». Однако данный пример годится только для ознакомительных целей, чтобы применить его в «боевых» условиях нужно провести небольшой рефакторинг.
Рефакторинг
Первое, что нужно сделать, — заключить код, отвечающий за ввод вывод данных в конструкцию try — catch (так легче управлять исключениями и применять свои исключения). Затем нужно создать отдельную переменную с типом File, куда можно записать адрес и название файла (это удобно, т. к. часто нужно работать с несколькими файлами, их помещают в отдельные переменные и обрабатывают циклом, и только затем результирующая переменная вставляется как параметр в FileWriter).
Также хорошей практикой при работе с потоками ввода/вывода считается использование буфера (класс FileWriter обращается к диску, если данных много это может потребовать много памяти, поэтому разумно манипулировать данными, используя буфер), для этого применяется класс BufferedWriter, а FileWriter записывается в скобки в качестве параметра. Для освобождения буфера вызывается метод flush(), его можно прописать перед методом close(), теперь код будет выглядеть так, как показано ниже.
Как записать Java в файл построчно
Каждый раз при компиляции данного кода в консоли будет перезаписываться одна и та же запись. Как сделать так, чтобы при запуске программы в файл записывалась новая информация построчно? Для этого в первую очередь нужно написать ключевое слово true вторым параметром при создании FileWriter:
BufferedWriter writer = new BufferedWriter(new FileWriter(myFile, true));
Каждый раз при компиляции программа будет записывать в файл строку, которая находится в методе write(), без переноса на следующую строку. В нашем случае получилось так:
пример записи в Java пример записи в Java пример записи в Java
Простой способ переноса строки — это добавление оператора /n к строковому аргументу метода write(), однако такой способ не будет работать в разных операционных системах. Для того чтобы записать файл построчно на различных платформах, нужно использовать метод line.separator класса System. В следующем примере видно, как этот метод записать в переменную lineSeparator, которую потом можно использовать в строковом аргументе метода write():
String lineSeparator = System.getProperty(«line.separator»);
Окончательно код будет выглядеть так, как показано ниже.
Результат выполнения данного кода будет следующим: в файле text.txt при троекратном запуске программы появятся строки «пример записи в Java».