Як здійснити запис у файл Java
Опубликованно 21.04.2018 16:14
При написанні програм на мові Java рано чи пізно постане необхідність читання і запису інформації в файл. Для цього в мові передбачені наступні інструменти для введення і виведення даних: клас Writer для запису і Reader для читання. Спадкоємцями цих класів є класи FileWriter і FileReader, зручні для роботи безпосередньо з файлами. Простий приклад запису у файл в Java
Перед тим як створювати точку входу в програму, потрібно прописати імпорти (необхідні класи знаходяться в бібліотеці java.io*, пропишемо зірочку, т. к. в подальшому знадобляться ще класи з цієї бібліотеки). Імпорт в редакторі повинен мати такий вигляд:
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(), тепер код буде виглядати так, як показано нижче.
Як записати 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".
Категория: Техника