Работа с файлами в 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(File). Переименование файла
Метод 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. Классы InputStreamReader, PrintStream. Создание потока ввода/вывода связанного с консолью. Перенаправление потоков ввода/вывода
⇑