Копіювання, перейменування і видалення файлів
У прикладі демонструються способи створення, копіювання, перейменування і видалення файлів із застосуванням класів File, FileOutputStream, FileInputStream, OutputStream, InputStream.
трохи теорії
Якщо вказаний вами файл вже існує, то при використанні даної технології він буде перезаписаний. Ви, однак, можете цього уникнути, якщо попередньо перевірите існування файлу методом exists, визначеним у класі File.
Щоб перейменувати файл, вам потрібно створити два об'єкти класу File - один для вихідного, інший для результуючого файлу. Далі скористайтеся методом renameTo, визначеним у класі File.
Зауважимо, що якщо перейменування завершилося успішно, метод renameTo повертає значення true, а якщо немає - false.
Видалити існуючий файл можна методом delete, визначеним у класі File. Цей метод, як і метод renameTo повертає значення true при успішному завершенні операції і false - при виникненні помилок.
опис прикладу
Наш приклад є автономним додатком Java. Він виконує декілька операцій над файлом, створеним в поточному каталозі.
В процесі роботи програма виводить на консоль абсолютний і канонічний шлях до створеного файлу, а також його розмір в байтах:
Розглянемо вихідний текст програми.
Так як операції над файлами можуть викликати виключення, вони виконуються в блоці try-catch:
Перш за все наш додаток створює об'єкт класу File для файлу з ім'ям! Temp.txt:
Далі виконується створення об'єкта класу FileOutputStream, що, власне, і призводить до створення файлу! Temp.txt в поточному каталозі:
Для запису в файл текстових рядків класу String ми створюємо на базі потоку fos класу FileOutputStream вихідний форматований потік даних dos класу DataOutputStream:
Запис рядків у вихідний потік dos виконується в циклі:
Далі ми закриваємо вихідний потік методом close:
Тепер файл! Temp.txt створений і в ньому є дані. Наша програма визначає і виводить на консоль абсолютний і канонічний шлях до файлу, а також довжину файлу:
Вся ця інформація виходить за допомогою відповідних методів класу File.
На другому етапі виконується перейменування файлу! Temp.txt:
Нове ім'я буде! Temp1.txt.
Якщо в процесі перейменування сталася помилка, ми виводимо на консоль відповідне повідомлення.
Видалення вихідного файлу temp1.txt виконується методом delete:
Для копіювання ми використовували проміжний буфер buf розмірі 8000 байт.
Блоки даних з вхідного потоку is Новомосковскются в цей буфер методом read, а потім записуються в вихідний потік методом write. Все це виконується в циклі до тих пір поки не буде досягнутий кінець вхідного потоку. У цьому випадку метод read поверне значення, рівне -1.