Робота із ZIP-архівами. Клас Console
У Java є вбудовані засоби для роботи із ZIP-архівами, а також клас Console, який використовується для роботи з командним рядком. Розглянемо ці два аспекти. Робота із ZIP-архівами в java – онлайн курс для дітей
1. Робота із ZIP-архівами
Для роботи з ZIP-архівами в Java використовується клас ZipInputStream для читання та ZipOutputStream для запису архівів. Обидва ці класи знаходяться в пакеті java.util.zip.
Основні класи:
- ZipInputStream — використовується для читання вмісту ZIP-архіву.
- ZipOutputStream — використовується для створення та запису ZIP-архіву.
- ZipEntry — представляє окремий файл або директорію в ZIP-архіві.
Створення ZIP-архіву:
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Main {
public static void main(String[] args) {
try (FileOutputStream fos = new FileOutputStream(“archive.zip”);
ZipOutputStream zos = new ZipOutputStream(fos)) {
// Створюємо нову ZipEntry для файлу
ZipEntry entry = new ZipEntry(“file.txt”);
zos.putNextEntry(entry);
// Записуємо дані у файл всередині архіву
String data = “Hello, ZIP!”;
zos.write(data.getBytes());
// Закриваємо потік запису для поточного файлу
zos.closeEntry();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Розпаковка ZIP-архіву:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class Main {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream(“archive.zip”);
ZipInputStream zis = new ZipInputStream(fis)) {
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
System.out.println(“Розпаковую: ” + entry.getName());
// Вивантажуємо вміст файлу з архіву
try (FileOutputStream fos = new FileOutputStream(entry.getName())) {
byte[] buffer = new byte[1024];
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
}
zis.closeEntry();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Основні моменти:
- ZipEntry представляє кожен файл або директорію в ZIP-архіві. Для кожного файлу потрібно створювати окремий ZipEntry.
- putNextEntry() — метод, який додає нову сутність в архів для запису.
- getNextEntry() — використовується для отримання наступної сутності з архіву під час розпаковки.
- closeEntry() — закриває поточну записану/прочитану сутність.
2. Клас Console
Клас Console в Java використовується для введення та виведення інформації в консоль під час роботи програми з командним рядком. Він знаходиться в пакеті `java.io`. Цей клас зручний для запиту користувацького введення та виведення текстової інформації.
Основні методи класу Console:
- readLine() — зчитує введений рядок із консолі.
- readPassword() — зчитує пароль або інші конфіденційні дані без їхнього відображення.
- format() — виводить відформатовану інформацію на консоль.
- flush() — очищає буфер виведення консолі.
Приклад використання Console:
import java.io.Console;
public class Main {
public static void main(String[] args) {
Console console = System.console();
if (console != null) {
// Читання введеного рядка
String name = console.readLine(“Введіть своє ім’я: “);
console.format(“Привіт, %s!%n”, name);
// Читання пароля (символи не відображаються під час введення)
char[] password = console.readPassword(“Введіть пароль: “);
console.format(“Ваш пароль має %d символів.%n”, password.length);
} else {
System.out.println(“Консоль недоступна.”);
}
}
}
Основні моменти:
- Console зазвичай використовується в додатках, які запускаються з командного рядка. Якщо ви запускаєте програму в середовищі, яке не підтримує консоль (наприклад, в IDE), метод System.console() поверне null.
- readPassword() використовується для безпечного введення паролів, оскільки дані не відображаються під час введення.
Важливі особливості:
- Консоль є зручною для взаємодії з користувачем, однак її використання залежить від середовища, в якому запущена програма (в IDE вона може бути недоступною).
- ZIP-архіви дозволяють ефективно зберігати та передавати кілька файлів у стиснутій формі.