Ти тут

Java: робота з файлами - запис, читання, видалення

Java має безліч інструментів для роботи з файлами, оскільки вони служать сховищем даних у багатьох програмах. Особливо часто доступ до файлів потрібно в Java Android. Всі класи для роботи з файлами розташовані в пакеті java.io, де також зберігаються класи для роботи з потоками введення і виведення. Строго кажучи, в Java робота з файлами відбувається переважно через байтові і символьні потоки введення-виведення. Винятком в даному випадку є клас File. З нього і почнемо.

Клас File Java - робота з файлами

Клас File взаємодіє безпосередньо з файлами і файлової системою. Примірник даного класу використовується, перш за все, для доступу до властивостями файлу і переміщення по ієрархії підкаталогів. У ньому не визначені способи вилучення і збереження даних в файл, але з допомогою цього класу можна отримати безліч відомостей про самому файлі: дата, час, права доступу і шлях до каталогу. По суті, клас File є об`єктної інтерпретацією файлу або каталогу в Java.

Щоб створити екземпляр класу File, використовують один з його конструкторів: File (String шлях до папки, String ім`я файлу).

Розглянемо основні методи даного класу, що дозволяють отримувати інформацію про файл або каталозі:

  • getName () - повертає ім`я файлу;
  • exists () - повертає логічне значення true, якщо файл існує, або false у протилежному випадку;
  • isFile () - визначає, вказує чи об`єкт на файл, повертаючи відповідне логічне значення;
  • isDirectory () - повертає true, якщо це папка;
  • canWrite () - повертає true, якщо файл доступний для запису;
  • canRead () - повертає true, якщо файл доступний для читання;
  • setReadOnly () - робить файл доступним лише для читання;
  • length () - повертає розмір файлу в байтах;
  • renameTo (File нове ім`я) - перейменовує поточний файл відповідно до переданим аргументом. Повертає true, якщо операція успішна;
  • delete () - видаляє файл або папку (якщо вона порожня), на який вказує викликає об`єкт;
  • list () - витягує список імен об`єктів, що зберігаються в даному каталозі, у вигляді масиву рядків (застосуємо виключно до каталогів).

Таким чином, за допомогою класу File забезпечується в Java робота з файлами і папками.

Робота з файлами за допомогою класів FileInputStream і FileOutputStream

Раніше ми згадували, що в Java робота з файлами здійснюється переважно за допомогою потоків введення-виведення. Байтові потоки для роботи з файлами представлені у вигляді класів FileInputStream і FileOutputStream. Ці класи є спадкоємцями базових абстрактних класів InputStream і OutputStream відповідно, тому методи цих класів доступні для роботи з файлами.

Розглянемо спочатку FileInputStream. Конструктори даного класу представлені на малюнку нижче:



java робота з файлами

Перший конструктор приймає як аргумент шлях до цільового файлу у вигляді рядка, а другий - у вигляді об`єктного уявлення. Хоча перший конструктор використовується частіше, у другому випадку є можливість вивчити властивості файлу доступними в класі File методами. При створенні екземпляра класу FileInputStream відкриває потік введення для читання файлу.

Конструктори класу FileOutputStream показані нижче:

Відео: Програмування на Java для початківців # 11 (Читання файлу)

java android



Ситуація схожа на FileInputStream, але він також може приймати логічне значення &ldquo-append&rdquo-, яке при true говорить про те, що дані, що записуються в цільової файл будуть дописуватися до вже наявних, а при false - буде йти повна перезапис файлу, тобто старі дані не будуть збережені.

Давайте розберемо приклад з використанням цих класів:

java робота з файлами приклад

Потік введення FileInputStream читає дані з файлу file1.txt побайтово за допомогою методу read (). Кожен прочитаний байт зберігається в змінну в целочисленном вигляді. Далі в тілі циклу while ця змінна приймає в якості аргументу методу write примірника FileOutputStream, який записує прийнятий байт в файл file2.txt. В кінці обидва потоку в обов`язковому порядку закриваються за допомогою методу close.

Класи FileReader і FileWriter

Якщо вам наперед відомо, що при роботі з файлами ви будете мати справу з текстом, то замість байтових потоків має сенс використовувати символьні. Дані потоки представлені класами FileReader і FileWriter в Java. Робота з файлами за допомогою цих класів відбувається приблизно так само, як і в попередньому випадку. Вони є нащадками класів Reader і Writer відповідно, в яких визначені основні методи для введення і виведення даних.

Відео: VB.net - 8 - Робота з файлами (створення, читання, видалення)

Конструктори класів FileReader і FileWriter представлені на малюнку нижче:

java робота з файлами і папками

Погодьтеся, відмінностей в семантиці в порівнянні з байтовими потоками практично немає. Суть в тому, що дані класи призначені спеціально для роботи з символами в Юникоде, чого не можуть робити байтові потоки. Ось таким чином організована в Java робота з файлами. Приклад використання даних класів наведено нижче:

java робота з файлами

Відео: Основи ООП C ++. Урок 12. Потоки і Файли. Частина 2

Як бачите, відмінностей не спостерігається. Варто відзначити, що хоча потоки символьні, метод read повертає, а метод write приймає цілочисельне значення. Хоча сигнатура методу write передбачає прийом аргументу типу int, записується в потік тільки молодші 16 біт, оскільки символи в Java представляються саме такою кількістю біт.

висновок

Отже, ми розібрали основні класи для роботи з файлами в Java. Варто відзначити, що якщо ви збираєтеся розробляти ПО під Java Android, можете сміливо використовувати даний інструментарій.

Поділися в соц мережах:

Увага, тільки СЬОГОДНІ!

Схожі повідомлення


Увага, тільки СЬОГОДНІ!