Java printing to file

Запись в файл на Java

В этом посте мы обсудим, как записывать данные в текстовый файл на Java. Решение должно создать файл, если он не существует, или обрезать файл перед записью, если он уже существует.

1. Использование PrintWriter

Мы должны использовать PrintWriter class в ситуациях, требующих записи символов, а не байтов.

Без буферизации каждый вызов PrintWriter’а print() метод приведет к преобразованию символов в байты, которые затем будут немедленно записаны в файл, что может быть очень неэффективным. Поэтому рекомендуется буферизовать вывод PrintWriter в файл с BufferedWriter , как показано ниже:

2. Использование Files Class

С Java 7 мы можем использовать Files.newBufferedWriter(…) , который возвращает BufferedWriter который можно использовать для эффективной записи текста в файл.

3. Использование OutputStreamWriter

С FileOutputStream предназначена для записи потоков байтов, мы можем построить OutputStreamWriter на FileOutputStream для записи потоков символов, которые могут выступать в качестве моста между потоками символов и потоками байтов.

Для максимальной эффективности рекомендуется обернуть BufferedWriter около OutputStreamWriter чьи операции записи являются дорогостоящими.

4. Использование библиотеки Guava

Guava’s Files.asCharSink(File, Charset, FileWriteMode) метод может использоваться для записи символьных данных в данный файл с использованием данного набора символов. Если режим не указан, файл будет усечен перед записью или будет создан новый файл, когда целевой файл не существует.

Читайте также:  Тег INPUT, атрибут maxlength

5. Использование Apache Commons IO

FileUtils класс из библиотеки Apache Commons IO имеет writeStringToFile(File, String, Charset) метод, который записывает строку в файл. Если файл уже существует, то он будет усечен перед записью.

6. Использование FileWriter

FileWriter это удобный класс для записи потоков символов с использованием кодировки символов по умолчанию.

Желательно обернуть BufferedWriter около FileWriter так как его операции записи очень дороги.

7. Использование PrintStream

А PrintStream может использоваться для добавления функциональности к выходному потоку. Но все символы, напечатанные PrintStream преобразуются в байты с использованием кодировки символов платформы по умолчанию.

Это все о записи в файл на Java.

Средний рейтинг 4.86 /5. Подсчет голосов: 14

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно

Источник

Redirecting System.out.println() output to a file in Java

The filed named out of the System class represents a standard output Stream, an object of the PrintStream class.

The println() method of this accepts any a value ( of any Java valid type), prints it and terminates the line.

By default, console (screen) is the standard output Stream (System.in) in Java and, whenever we pass any String value to System.out.prinln() method, it prints the given String on the console.

Redirecting System.out.println()

The setOut() method of the System class in java accepts an object of the PrintStream class and makes it the new standard output stream.

Therefore, to redirect the System.out.println() output to a file −

  • Create an object of the File class.
  • Instantiate a PrintStream class by passing the above created File object as a parameter.
  • Invoke the out() method of the System class, pass the PrintStream object to it.
  • Finally, print data using the println() method, and it will be redirected to the file represented by the File object created in the first step.

Example

import java.io.File; import java.io.IOException; import java.io.PrintStream; public class SetOutExample < public static void main(String args[]) throws IOException < //Instantiating the File class File file = new File("D:\sample.txt"); //Instantiating the PrintStream class PrintStream stream = new PrintStream(file); System.out.println("From now on "+file.getAbsolutePath()+" will be your console"); System.setOut(stream); //Printing values to file System.out.println("Hello, how are you"); System.out.println("Welcome to Tutorialspoint"); >>

Output

From now on D:\sample.txt will be your console

Источник

Java printing to file

Класс PrintStream

Класс PrintStream — это именно тот класс, который используется для вывода на консоль. Когда мы выводим на консоль некоторую информацию с помощью вызова System.out.println() , то тем самым мы задействует PrintStream , так как переменная out в классе System как раз и представляет объект класса PrintStream, а метод println() — это метод класса PrintStream.

Но PrintStream полезен не только для вывода на консоль. Мы можем использовать данный класс для записи информации в поток вывода. Для этого PrintStream определяет ряд конструкторов:

PrintStream(OutputStream outputStream) PrintStream(OutputStream outputStream, boolean autoFlushingOn) PrintStream(OutputStream outputStream, boolean autoFlushingOn, String charSet) throws UnsupportedEncodingException PrintStream(File outputFile) throws FileNotFoundException PrintStream(File outputFile, String charSet) throws FileNotFoundException, UnsupportedEncodingException PrintStream(String outputFileName) throws FileNotFoundException PrintStream(String outputFileName, String charSet) throws FileNotFoundException, UnsupportedEncodingException

Параметр outputStream — это объект OutputStream, в который производится запись. Параметр autoFlushingOn при значении true позволяет автоматически записывать данные в поток вывода. По умолчанию этот параметр равен false. Параметр charSet позволяет указать кодировку символов.

В качестве источника для записи данных вместо OutputStream можно использовать объект File или строковый путь, по которому будет создаваться файл.

Для вывода информации в выходной поток PrintStream использует следующие методы:

  • println() : вывод строковой информации с переводом строки
  • print() : вывод строковой информации без перевода строки
  • printf() : форматированный вывод

Например, запишем информацию в файл:

import java.io.*; public class Program < public static void main(String[] args) < String text = "Привет мир!"; // строка для записи try(FileOutputStream fos=new FileOutputStream("C://SomeDir//notes3.txt"); PrintStream printStream = new PrintStream(fos)) < printStream.println(text); System.out.println("Запись в файл произведена"); >catch(IOException ex) < System.out.println(ex.getMessage()); >> >

В данном случае применяется форма конструктора PrintStream, которая в качестве параметра принимает поток вывода: PrintStream (OutputStream out) . Кроме того, мы могли бы использовать ряд других форм конструктора, например, указывая названия файла для записи: PrintStream (string filename)

В качестве потока вывода используется объект FileOutputStream . С помощью метода println() производится запись информации в выходной поток — то есть в объект FileOutputStream. (В случае с выводом на консоль с помощью System.out.println() в качестве потока вывода выступает консоль)

Кроме того, как и любой поток вывода и наследник класса OutputStream он имеет метод write :

import java.io.*; public class Program < public static void main(String[] args) < try(PrintStream printStream = new PrintStream("notes3.txt")) < printStream.print("Hello World!"); printStream.println("Welcome to Java!"); printStream.printf("Name: %s Age: %d \n", "Tom", 34); String message = "PrintStream"; byte[] message_toBytes = message.getBytes(); printStream.write(message_toBytes); System.out.println("The file has been written"); >catch(IOException ex) < System.out.println(ex.getMessage()); >> >

После выполнения этой программы получится файл со следующим содержанием:

Hello World!Welcome to Java! Name: Tom Age: 34 PrintStream

PrintWriter

На PrintStream похож другой класс PrintWriter . Его можно использовать как для вывода информации на консоль, так и в файл или любой другой поток вывода. Данный класс имеет ряд конструкторов:

  • PrintWriter(File file) : автоматически добавляет информацию в указанный файл
  • PrintWriter(File file, String csn) : автоматически добавляет информацию в указанный файл с учетом кодировки csn
  • PrintWriter(OutputStream out) : для вывода информации используется существующий объект OutputStream, автоматически сбрасывая в него данные
  • PrintWriter(OutputStream out, boolean autoFlush) : для вывода информации используется существующий объект OutputStream, второй параметр указывает, надо ли автоматически добавлять в OutputStream данные
  • PrintWriter(String fileName) : автоматически добавляет информацию в файл по указанному имени
  • PrintWriter(String fileName, String csn) : автоматически добавляет информацию в файл по указанному имени, используя кодировку csn
  • PrintWriter(Writer out) : для вывода информации используется существующий объект Writer, в который автоматически идет запись данных
  • PrintWriter(Writer out, boolean autoFlush) : для вывода информации используется существующий объект Writer, второй параметр указывает, надо ли автоматически добавлять в Writer данные

PrintWriter реализует интерфейсы Appendable, Closable и Flushable, и поэтому после использования представляемый им поток надо закрывать.

Для записи данных в поток он также используется методы printf() и println() .

Например, применим данный класс для вывода на консоль:

try(PrintWriter pw = new PrintWriter(System.out))

В качестве потока вывода здесь применяется System.out, а на консоль будет выведена строка «Hello world!»

Источник

PrintWriter в Java

Реализация класса Writer в Java – это класс PrintWriter. Отформатированное представление объектов выводится в поток вывода текста.

Что такое PrintWriter в Java?

Класс Java.io.PrintWriter печатает отформатированные представления объектов в поток вывода текста. Этот класс реализует все методы печати, которые находятся в printstream.

С этим простым определением показажу вам объявление класса.

public class PrintWriter extends Writer

Этот класс наследует методы из следующего класса – Java.io.Object.

Конструкторы

Ниже приведен список конструкторов класса PrintWriter:

Конструктор Описание
PrintWriter(File file, String csn) Помогает в создании нового PrintWriter без автоматической очистки строки. Он создает его с указанным файлом и набором символов.
PrintWriter(OutputStream out, boolean autoFlush) Помогает в создании нового PrintWriter из уже существующего выходного потока.
PrintWriter(OutputStream out) Помогает в создании нового PrintWriter из существующего OutputStream.
PrintWriter(String fileName, String csn) Помогает в создании нового PrintWriter, в котором указаны имя файла и кодировка.
PrintWriter(String fileName) Создает новый PrintWriter с указанным именем файла без автоматической очистки строки.
PrintWriter(Writer out) Создает новый PrintWriter без автоматической очистки строки.
PrintWriter(Writer out, boolean autoFlush) Создает новый PrintWriter.
PrintWriter(File file) Создает новый PrintWriter, без автоматической очистки строки, с указанным файлом.

Методы

Метод Описание
PrintWriter append(CharSequence csq) Помогает в добавлении указанной последовательности символов к этому автору.
PrintWriter append(CharSequence csq, int start, int end) Помогает в добавлении подпоследовательности указанной последовательности символов к этому автору.
void close() Закрывает поток.
boolean checkError() Закрывает поток, если он не закрыт, и проверяет состояние ошибки.
protected void clearError() Очищает состояние ошибки этого потока.
void flush() Очищает поток.
PrintWriter format(String format, Object… args) Записывает отформатированную строку в этот модуль записи, используя указанную строку формата и аргументы.
PrintWriter format(Locale l, String format, Object… args) Записывает отформатированную строку в этот модуль записи, используя указанную строку формата и аргументы.
void print(char c) Печатает символ.
void print(float f) Печатает число с плавающей точкой.
void print(double d) Печатает число с плавающей точкой двойной точности.
void print(boolean b) Печатает логическое значение.
void print(int i) Печатает целое число.
void print(long l) Печатает длинное целое число.
void print(Object obj) Печатает объект.
void print(String s) Печатает строку.
void println() Завершает текущую строку записью строки разделителя строк.
PrintWriter printf(String format, Object… args) Метод для записи отформатированной строки в этот модуль записи с использованием указанной строки формата и аргументов.
PrintWriter printf(Locale l, String format, Object… args) Записывает отформатированную строку в этот модуль записи, используя указанную строку формата и аргументы.
void println(boolean x) Печатает логическое значение, а затем завершает строку.
void println(char x) Печатает символ, а затем завершает строку.
void println(char[] x) Печатает массив символов, а затем завершает строку.
void println(double x) Печатает число с плавающей запятой двойной точности и, следовательно, завершает строку.
void println(long x) Печатает длинное целое число и затем завершает строку.
void println(int x) Печатает целое число, а затем завершает строку.
void println(float x) Печатает число с плавающей запятой и затем завершает строку.
void println(Object x) Печатает объект, а затем завершает строку.
void println(String x) Печатает строку и затем завершает строку.
void write(char[] buf) Записывает массив символов.
void write(char[] buf, int off, int len) Записывает часть массива символов.
protected void setError() Указывает на то, что произошла ошибка.
void write(int c) Пишет один символ.
void write(String s) Пишет строку.

Теперь давайте перейдем к процессу реализации на примере.

import java.io.File; import java.io.PrintWriter; public class Example < public static void main(String[] args) throws Exception < //Data to write on Console using PrintWriter PrintWriter writer = new PrintWriter(System.out); writer.write("Welcome to Edureka!"); writer.flush(); writer.close(); //Data to write in File using PrintWriter PrintWriter writer1 =null; writer1 = new PrintWriter(new File("D:testout.txt")); writer1.write("Learn different technologies."); writer1.flush(); writer1.close(); >>

Вывод: Learn different technologies.

Источник

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