Серіалізація об’єктів. Клас File. Робота з файлами та каталогами

Прокрутити вниз

Серіалізація об’єктів в Java

Серіалізація — це процес перетворення об’єкта в потік байтів, щоб його можна було зберегти у файл, передати по мережі або іншим чином використовувати в збереженому вигляді. Відповідно, **десеріалізація** — це процес відновлення об’єкта з потоку байтів.

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

Основні класи для серіалізації:

  • ObjectOutputStream — використовується для запису об’єктів у потік (серіалізація).
  • ObjectInputStream — використовується для читання об’єктів з потоку (десеріалізація).

Приклад серіалізації:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;

class Person implements Serializable {
private static final long serialVersionUID = 1L; // Рекомендується для збереження сумісності версій класу
String name;
int age;

public Person(String name, int age) {
this.name = name;
this.age = age;
}
}

public class Main {
public static void main(String[] args) {
Person person = new Person(“John”, 30);

try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(“person.ser”))) {
oos.writeObject(person); // Серіалізуємо об’єкт
} catch (IOException e) {
e.printStackTrace();
}
}
}

Приклад десеріалізації:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class Main {
public static void main(String[] args) {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(“person.ser”))) {
Person person = (Person) ois.readObject(); // Десеріалізуємо об’єкт
System.out.println(“Ім’я: ” + person.name + “, Вік: ” + person.age);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}

Клас File

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

Основні методи класу `File`:

  • exists() — перевіряє, чи існує файл або каталог.
  • createNewFile() — створює новий файл, якщо його ще не існує.
  • delete() — видаляє файл або порожній каталог.
  • isFile() — перевіряє, чи є об’єкт файлом.
  • isDirectory() — перевіряє, чи є об’єкт каталогом.
  • mkdir() — створює новий каталог.
  • list() — повертає список файлів і каталогів у каталозі.
  • length() — повертає розмір файлу в байтах.
  • renameTo(File dest)** — перейменовує файл або каталог.

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

import java.io.File;
import java.io.IOException;

public class Main {
public static void main(String[] args) {
File file = new File(“example.txt”);

try {
if (file.createNewFile()) {
System.out.println(“Файл створено: ” + file.getName());
} else {
System.out.println(“Файл вже існує.”);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

Робота з каталогами

Клас File також дозволяє працювати з каталогами. Можна створювати нові каталоги, отримувати список файлів у каталозі або видаляти їх.

Створення каталогу:

import java.io.File;

public class Main {
public static void main(String[] args) {
File dir = new File(“myDirectory”);

if (dir.mkdir()) {
System.out.println(“Каталог створено: ” + dir.getName());
} else {
System.out.println(“Каталог не вдалося створити.”);
}
}
}

Отримання списку файлів у каталозі:

import java.io.File;

public class Main {
public static void main(String[] args) {
File dir = new File(“myDirectory”);

if (dir.exists() && dir.isDirectory()) {
String[] files = dir.list(); // Отримуємо список файлів і каталогів
if (files != null) {
for (String file : files) {
System.out.println(file);
}
}
}
}
}

Видалення файлу або каталогу:

import java.io.File;

public class Main {
public static void main(String[] args) {
File file = new File(“example.txt”);

if (file.delete()) {
System.out.println(“Файл видалено: ” + file.getName());
} else {
System.out.println(“Не вдалося видалити файл.”);
}
}
}

Основні моменти роботи з файлами та каталогами:

  • Клас File не використовується для читання або запису в файли — він використовується для управління файлами (створення, видалення, перевірка існування).
  • Для роботи з текстовими або бінарними даними у файлі використовуються класи FileReader, FileWriter, FileInputStream, FileOutputStream або їх буферизовані варіанти.
  • Серіалізація дозволяє зберігати та відновлювати стан об’єктів у зручному форматі.

Серіалізація об’єктівКлас File. Робота з файлами та каталогами