import 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(), тепер код буде виглядати так, як показано нижче.
Кожен раз при компіляції даного коду в консолі буде перезаписуватися одна і та ж запис. Як зробити так, щоб при запуску програми в файл записувалася нова інформація порядково? Для цього в першу чергу потрібно написати ключове слово 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".