Робота з файлами в Java. Клас File. Основні методи роботи
У даній темі розписано базові методи класу File, який є частиною системи вводу/виводу Java. Для розглянутих методів наведено приклади з поясненнями.
Зміст
- 1. Створення екземпляру класу File. Конструктори класу
- 2. Метод getName(). Повернути ім’я файлу або каталогу
- 3. Метод getPath(). Отримати ім’я файлу
- 4. Метод isAbsolute(). Визначити, чи вказано повний шлях до файлу
- 5. Метод getAbsolutePath(). Отримати повний шлях до файлу
- 6. Методи canRead(), canWrite(). Визначення того, чи допускає файловий об’єкт читання та запис
- 7. Метод exists(). Визначення наявності файлу (каталогу)
- 8. Метод isDirectory(). Визначити, чи зв’язаний файловий об’єкт з директорієм
- 9. Метод isFile(). Визначити, чи зв’язаний файловий об’єкт з файлом
- 10. Метод isHidden(). Визначити, чи файловий об’єкт є прихованим
- 11. Метод length(). Визначити розмір в байтах файлу, що зв’язаний з файловим об’єктом
- 12. Метод delete(). Видалення файлу
- 13. Метод mkdir(). Створення папки або каталогу
- 14. Метод mkdirs(). Створення декількох вкладених папок
- 15. Метод renameTo(). Перейменування файлу
- 16. Метод getTotalSpace(). Визначення розміру диску
- 17. Метод getFreeSpace(). Визначити вільне місце на диску
- 18. Метод getUsableSpace(). Визначення корисного місця на диску
- Зв’язані теми
Пошук на інших ресурсах:
1. Створення екземпляру класу File. Конструктори класу
У класі File реалізовано декілька конструкторів, кожен з яких дозволяє формувати ім’я файлу чи каталогу різними способами.
Найбільш поширеним є конструктор, що отримує рядок типу String. У цьому рядку задається повне (абсолютне) або скорочене (відносне) ім’я файлу чи каталогу, який розглядається (створюється, визначається тощо).
Також є конструктори, що формують ім’я файлу з декількох частин.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Конструктори класу File // 1. Конструктор, що отримує один рядок типу String, // створюється файловий об'єкт (змінна) з іменем f1 File f1 = new File("output.txt"); // задано скорочений шлях String path1 = f1.getPath(); System.out.println(path1); // 2. Конструктор, що отримує два рядки: // - перший рядок задає абсолютний шлях до файлового елементу, // - другий рядок задає ім'я файлового елементу. File f2 = new File("C:\\", "Program Files"); String path2 = f2.getPath(); // path2 = "C:\\Program Files" System.out.println("path2 = " + path2); // 3. Конструктор типу File(File, String) File f3 = new File("C:\\Programs\\Java\\Project22"); File f4 = new File(f3,"output.txt"); String path3 = f3.getPath(); String path4 = f4.getPath(); System.out.println("path3 = " + path3); // path3 = C:\Programs\Java\Project22 System.out.println("path4 = " + path4); // path4 = C:\Programs\Java\Project22\output.txt }
Результат виконання програми
output.txt path2 = C:\Program Files path3 = C:\Programs\Java\Project22 path4 = C:\Programs\Java\Project22\output.txt
⇑
2. Метод getName(). Повернути ім’я файлу або каталогу
Метод getName() повертає ім’я файлу або каталогу, з яким зв’язана файлова змінна. Якщо абсолютний шлях до імені файлу (каталогу) містить декілька рівнів вкладення, то повертається безпосередньо ім’я цього файлу (каталогу). Загальна форма використання методу наступна
name = fileObj.getName();
тут
- name – змінна типу String, що є результатом виконання методу;
- fileObj – файловий об’єкт, зв’язаний з файлом чи каталогом.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Метод getName() - отримати ім'я файлу // Оголосити файловий об'єкт та зв'язати його з іменем файлу f = new File("C:\\Program Files"); String name = f.getName(); // name = "Program Files" System.out.println("name = " + name); }
Результат виконання програми
name = Program Files
⇑
3. Метод getPath(). Отримати ім’я файлу
Метод getPath() повертає ім’я файлу (каталогу), яке було задане у конструкторі при створенні файлового об’єкту типу File. Загальна форма використання методу наступна
path = fileObj.getPath();
тут
- path – рядок типу String, що є іменем файлу (каталогу), яке було задане при створенні файлової змінної fileObj.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Метод getPath() - отримати повний шлях до файлу // Оголосити файловий об'єкт та зв'язати його з іменем файлу File f = new File("output.txt"); // ім'я текстового файлу String Path = f.getPath(); System.out.println("Path = " + Path); // Задати повне ім'я при створенні файлового об'єкту f = new File("C:\\Program Files"); Path = f.getPath(); System.out.println("Path = " + Path); // Path = C:\Program Files }
⇑
4. Метод isAbsolute(). Визначити, чи вказано повний шлях до файлу
Метод isAbsolute() дозволяє визначити, чи вказано повний шлях до файлу при створенні файлового об’єкту в конструкторі класу File. Загальна форма використання методу наступна
res = fileObj.isAbsolute();
тут
- res – результат, який рівний true, якщо при створенні файлової змінної fileObj було задано абсолютний шлях.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Метод isAbsolute() - чи задано повний шлях до файлу (каталогу) // Оголосити файловий об'єкт та зв'язати його з іменем файлу File f1 = new File("output.txt"); // задано скорочений шлях boolean res1; res1 = f1.isAbsolute(); System.out.println("res1 = " + res1); // res1 = false // Задати повне ім'я при створенні файлового об'єкту File f2 = new File("C:\\Program Files"); boolean res2 = f2.isAbsolute(); System.out.println("res2 = " + res2); // res2 = true }
⇑
5. Метод getAbsolutePath(). Отримати повний шлях до файлу
Метод getAbsolutePath() повертає повний шлях до файлу. Загальна форма використання методу наступна
path = fileObj.getAbsolutePath();
тут
- path – рядок типу String, що є результатом;
- fileObj – файловий об’єкт, що зв’язаний з файлом, для якого потрібно визначити абсолютний шлях.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Метод getAbsolutePath() - отримати повний шлях до файлу // Оголосити файловий об'єкт та зв'язати його з іменем файлу File f = new File("output.txt"); // ім'я текстового файлу String absPath = f.getAbsolutePath(); System.out.println("Path = " + absPath); }
Результат виконання програми
Path = C:\Programs\Java\Project22\output.txt
⇑
6. Методи canRead(), canWrite(). Визначення того, чи допускає файловий об’єкт читання та запис
Методи canRead() та canWrite() призначені для визначення того, чи допускає файловий об’єкт читання або запис. У випадку позитивного результату методи повертають true.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { File f = new File("output.txt"); if (f.canRead()) System.out.println("The result of canRead() is true."); else System.out.println("The result of canRead() is false"); if (f.canWrite()) System.out.println("The result of canWrite() is true."); else System.out.println("The result of canWrite() is false"); }
Результат роботи програми
The result of canRead() is true. The result of canWrite() is true.
⇑
7. Метод exists(). Визначення наявності файлу (каталогу)
Метод exists() призначений для визначення існування файлу, асоційованого з файловим об’єктом. Загальна форма використання методу наступна
res = fileObj.exists();
тут
- res – результат роботи методу. Якщо res = true, то заданий файл існує;
- fileObj – об’єкт, що перевіряється.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Метод exists() - визначити, чи файл (директорій) існує. // Оголосити файловий об'єкт та зв'язати його з іменем файлу File f = new File("output.txt"); // ім'я текстового файлу // Якщо файл f існує, то вивести відповідне повідомлення if (f.exists()) System.out.println("File is present."); else System.out.println("File is not present"); // файл відсутній // Визначити, чи існує каталог File f2 = new File("C:\\Program Files"); if (f2.exists()) System.out.println("The directory is present."); else System.out.println("The directory is not present."); }
⇑
8. Метод isDirectory(). Визначити, чи зв’язаний файловий об’єкт з директорієм
Метод isDirectory() призначений для визначення того, чи файл є директорієм (папкою). Загальна форма використання методу наступна
res = fileObj.isDirectory();
тут
- res – значення типу bool. Якщо res=true, то файл є директорієм;
- fileObj – файловий об’єкт, який перевіряється.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Метод isDirectory - визначити, чи файл є директорієм (папкою) // 1. Оголосити файлову змінну та зв'язати її іменем файлу чи папки File f = new File("C:\\Program Files"); // ім'я папки, яку потрібно перевірити // Якщо файл f існує, то визначити його тип if (f.exists()) { if (f.isDirectory()) { System.out.println("Directory."); } else System.out.println("File."); } else System.out.println("The file is not present"); // файл відсутній }
⇑
9. Метод isFile(). Визначити, чи зв’язаний файловий об’єкт з файлом
Метод isFile() повертає true, якщо файловий об’єкт зв’язаний з файлом. Загальна форма використання методу наступна
res = fileObj.isFile();
тут
- res – результат обчислення. Якщо файловий об’єкт є файлом, то res = true;
- fileObj – файловий об’єкт.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Метод isFile() - визначити, чи файловий об'єкт зв'язаний з файлом // 1. Оголосити файловий об'єкт та зв'язати його з іменем файлу File f = new File("output.txt"); // ім'я текстового файлу // Якщо файл f існує, то визначити його тип if (f.exists()) { if (f.isFile()) { System.out.println("File object is file."); } else System.out.println("File object is not file."); } else System.out.println("The file is not present"); // файл відсутній }
⇑
10. Метод isHidden(). Визначити, чи файловий об’єкт є прихованим
Метод isHidden() повертає true, якщо файловий об’єкт зв’язаний з файлом у якого встановлено атрибут “прихований” (hidden). Загальна форма використання методу
res = fileObj.isHidden();
тут
- fileObj – файловий об’єкт;
- res – результат роботи методу. Якщо res = true, то файловий об’єкт зв’язаний з прихованим файлом.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { File f = new File("output.txt"); if (f.isHidden()) System.out.println("The file \"output.txt\" is hidden."); else System.out.println("The file \"output.txt\" is not hidden."); }
⇑
11. Метод length(). Визначити розмір в байтах файлу, що зв’язаний з файловим об’єктом
Метод length() призначений для визначення розміру файлу і має наступну загальну форму
long length()
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Визначити розмір файлу в байтах // 1. Оголосити файлову змінну File f = new File("abc.txt"); // 2. Створити потік, що записує символи у файл f FileWriter fw = new FileWriter(f); // 3. Записати в файл рядок "Hello world!" fw.write("Hello world!"); // 4. Закрити потік fw.close(); // 5. Визначити довжину файлу "abc.txt" long len = f.length(); // 6. Вивести довжину файлу на консоль System.out.println("len = " + len); // len = 12 }
Результат роботи програми
len = 12
⇑
12. Метод delete(). Видалення файлу
Метод delete() призначений для видалення файлу. Загальна форма використання методу
res = fileObj.delete();
тут
- fileObj – файловий об’єкт, що зв’язаний з файлом, який потрібно видалити;
- res – результат виконання методу. Якщо res = true, то видалення файлу відбулось успішно.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Метод delete() - видалити файл за його іменем // Оголосити файлову змінну File f = new File("somefile.txt"); // Видалити файл, якщо він існує if (f.exists()) { f.delete(); System.out.println("The file is deleted."); } else System.out.println("The file is not present."); }
⇑
13. Метод mkdir(). Створення папки або каталогу
Метод mkdir() використовується для створення папки (каталогу). Загальна форма використання методу наступна
res = fileObj.mkdir();
тут
- res – результат типу bool. Якщо каталог створено успішно, то res = true, в противному випадку res = false;
- fileObj – об’єкт типу File, що зв’язаний з іменем каталогу, що має бути створений.
Приклад. Створюється каталог з іменем 123 в поточному каталозі.
import java.io.*; ... public static void main(String[] args) throws IOException { // Метод mkdir() - створити каталог // 1. Оголосити файлову змінну та зв'язати її з папкою в поточному каталозі // (задається відносний шлях). File f = new File("123"); // Якщо каталог не існує, то створити його if (!f.exists()) { if (f.mkdir()) { System.out.println("The folder is created!"); // створено успішно } else System.out.println("The folder is not created."); // каталог не створено } else System.out.println("The folder is present."); // 2. Створити файлову змінну та зв'язати її з папкою // C:\Programs\345 - абсолютний шлях до папки. File f2 = new File("C:\\Programs\\345"); boolean res = f2.mkdir(); if (res) System.out.println("The folder C:\\Programs\\345 is created."); else System.out.println("The folder C:\\Programs\\345 is not created."); }
Результат роботи програми
The folder is present. The folder C:\Programs\345 is created.
⇑
14. Метод mkdirs(). Створення декількох вкладених папок
Метод mkdirs() дозволяє створити декілька рівнів вкладень папок за один раз. На відміну від методу mkdir(), цей метод створює рівні вкладення папок які не існують. У методі mkdir() щоб створити підпапку потрібно, щоб попередньо обов’язково була створена папка верхнього рівня.
Загальна форма використання методу наступна:
res = fileObj.mkdirs();
тут
- fileObj – файловий об’єкт, що містить рядок з іменем або іменами папок, які потрібно створити;
- res – результат виконання методу. Якщо послідовність папок створена успішно, то res = true.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Створити папки за вказаним шляхом File f = new File("C:\\ABC\\DEF\\GHI"); // Створити папки C:\ABC, C:\ABC\DEF, C:\ABC\DEF\GHI if (f.mkdirs()) System.out.println("The folders is created."); else System.out.println("The folders is not created"); }
⇑
15. Метод renameTo(). Перейменування файлу
Метод renameTo() призначений для перейменування файлу. Загальна форма використання методу наступна
res = f1.renameTo(f2);
тут
- res – результат виконання методу. Якщо файл перейменовано успішно, то res = true, інакше res = false;
- f1 – файлова змінна, що відповідає файлу-джерелу, який потрібно перейменувати;
- f2 – файлова змінна, що відповідає новому імені файла-джерела f1 після його перейменування.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Метод renameTo() - перейменувати файл. // Перейменувати файл strings.txt у файл array.txt. // До обидвох файлів задається відносний шлях // 1. Оголосити файлову змінну та зв'язати її з файлом File f1 = new File("abc.txt"); File f2 = new File("array.txt"); // Якщо файл f1 існує, то перейменувати його if (f1.exists()) { if (f1.renameTo(f2)) { System.out.println("Ok!"); // перейменовано успішно } else System.out.println("The file is not renamed."); // файл не перейменовано } else System.out.println("The file is not present"); }
⇑
16. Метод getTotalSpace(). Визначення розміру диску
З допомогою методу getTotalSpace() можна визначити загальний розмір носія (диску) в байтах. Метод повертає результат типу long. Загальна форма використання методу наступна
totalSpace = fileObj.getTotalSpace();
тут
- fileObj – файловий об’єкт, в якому визначено ім’я диску для якого визначається розмір;
- totalSpace – змінна типу long, що є результатом виконання методу.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Визначити розмір диску File f = new File("E:\\"); // Визначити загальний об'єм жорсткого диску E: long totalSpace = f.getTotalSpace(); System.out.println("Drive E: - Total space = " + totalSpace); // Визначити об'єм диску C: f = new File("C:\\"); totalSpace = f.getTotalSpace(); System.out.println("Drive C: - Total space = " + totalSpace); }
Результат виконання програми
Drive E: - Total space = 790486839296 Drive C: - Total space = 208684355584
⇑
17. Метод getFreeSpace(). Визначити вільне місце на диску
З допомогою методу getFreeSpace() можна визначити об’єм в байтах вільного місця на носії. Загальна форма використання методу наступна
space = fileObj.getFreeSpace();
тут
- fileObj – файловий об’єкт, що містить ім’я носія, ім’я файлу чи ім’я папки. Якщо задається ім’я файлу чи папки, то визначається об’єм вільного місця для носія, на якому цей диск та файл розміщуються;
- space – змінна типу long, що є результатом роботи методу.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Визначити розмір диску File f = new File("E:\\"); // Визначити розмір вільної пам'яті на диску long freeSpace = f.getFreeSpace(); System.out.println("Drive E: - Free space = " + freeSpace); // Визначити вільне місце на диску C: f = new File("C:\\"); freeSpace = f.getFreeSpace(); System.out.println("Drive C: - Free space = " + freeSpace); }
Результат виконання програми
Drive E: - Free space = 197617647616 Drive C: - Free space = 18358034432
⇑
18. Метод getUsableSpace(). Визначення корисного місця на диску
З допомогою методу getUsableSpace() можна визначити корисний розмір місця на носії (диску). У багатьох випадках значення, яке повертає даний метод рівне значенню, що повертає метод getFreeSpace(). Загальна форма використання методу наступна:
space = fileObj.getUsageSpace();
де
- fileObj – файловий об’єкт, який містить ім’я диску чи ім’я файлу. Якщо для fileObj визначено ім’я файлу, то визначається об’єм носія, на якому цей файл зберігається;
- space – змінна типу long, що є розміром корисного місця на диску.
Приклад.
import java.io.*; ... public static void main(String[] args) throws IOException { // Визначити розмір диску File f = new File("E:\\"); // Визначити об'єм корисного місця на диску E: long usableSpace = f.getUsableSpace(); System.out.println("Drive E: - Usable space = " + usableSpace); // Визначити об'єм диску C: та вільне місце на диску C: f = new File("C:\\"); usableSpace = f.getUsableSpace(); System.out.println("Drive C: - Usable space = " + usableSpace); }
Результат роботи програми
Drive E: - Usable space = 197617647616 Drive C: - Usable space = 18358034432
⇑
Зв’язані теми
- Система вводу/виводу Java. Потік. Байтові потоки. Символьні потоки. Стандартні потоки
- Робота з консоллю в Java. Класи InputStreamReader, PrintStream. Створення потоку вводу/виводу зв’язаного з консоллю. Перенаправлення потоків вводу виводу
⇑