Автор оригинала: Pankaj Kumar.
Класс файлов Java находится в центре операций ввода-вывода Java.
Класс файлов Java
- Класс файлов Java является частью
java.io
посылка. - Класс файлов Java – это абстрактное представление имен файлов и каталогов.
- Операционные системы используют системные имена путей для представления файлов и каталогов, но класс файлов java представляет абстрактное, независимое от системы представление имен путей. Это преобразование имен путей в абстрактное имя пути или из него по своей сути зависит от системы.
- Родительский элемент абстрактного пути можно получить, вызвав
getParent()
метод класса File.
Конструкторы файлов Java
Мы можем создать экземпляр класса File, используя приведенные ниже конструкторы.
Файл(родительский файл, дочерняя строка)
: С помощью этого конструктора мы можем создать экземпляр класса Файла из указанного родительского абстрактного пути и строки дочернего пути.Файл(строковый путь)
: С помощью этого конструктора мы можем создать экземпляр класса Файла из указанного строкового пути, преобразовав его в абстрактный путь.Файл(родительская строка, дочерняя строка)
: С помощью этого конструктора файлов мы можем создать экземпляр класса файла из указанного родительского и дочернего пути.Файл(URI uri)
: Мы можем создать экземпляр класса файла из указанного URI, преобразовав его в абстрактный путь.
Давайте взглянем на приведенную ниже программу, чтобы показать другой способ создания java.io.Файл
экземпляр.
package com.journaldev.examples; import java.io.File; import java.net.URI; import java.net.URISyntaxException; /** * Java File Constructor Example * * @author pankaj * */ public class FileConstructor { public static void main(String[] args) { //First File file = new File("D:/pankaj/data/file.txt"); //Second File parent = new File("D:/pankaj/"); File file2 = new File(parent, "data2/file2.txt"); //Third File file3 = new File("D:/pankaj/", "data3/file3.txt"); System.out.println("First : "+file.getAbsolutePath()); System.out.println("Second : "+file2.getAbsolutePath()); System.out.println("Third : "+file3.getAbsolutePath()); //Forth URI uri; try { uri = new URI("file:///D:/pankaj/data4/file4.txt"); File file4 = new File(uri); System.out.println("Forth : "+file4.getAbsolutePath()); } catch (URISyntaxException e) { e.printStackTrace(); } } }
Результатом работы вышеуказанной программы является:
First : D:\pankaj\data\file.txt Second : D:\pankaj\data2\file2.txt Third : D:\pankaj\data3\file3.txt Forth : D:\pankaj\data4\file4.txt
Методы файлов Java
Давайте взглянем на приведенные ниже методы класса File.
может выполнить()
: Этот метод проверяет, может ли приложение выполнить файл, обозначенный этим абстрактным именем пути, и возвращает значение true или false.может читать()
: Этот метод проверяет, может ли приложение прочитать файл, обозначенный этим абстрактным именем пути, и возвращает значение true или false.может написать()
: Этот метод проверяет, может ли приложение изменить файл, обозначенный этим абстрактным именем пути, и возвращает значение true или false.compareTo(путь к файлу)
: Этот метод лексикографически сравнивает два абстрактных пути и возвращает целое значение.createNewFile()
: Этот метод автоматически создает новый пустой файл с именем по этому абстрактному пути, если и только если файл с таким именем не существует и возвращает значение true или false.createTempFile(префикс строки, суффикс строки)
: Это статический метод, который создает пустой файл в каталоге временных файлов по умолчанию, используя указанные строки префикса и суффикса для создания имени файла и возвращает объект файла.createTempFile(префикс строки, суффикс строки, каталог файлов)
: Это статический метод, который создает пустой файл в указанном каталоге с использованием указанных строк префикса и суффикса для создания имени файла и возвращает объект файла.удалить()
: Этот метод удаляет файл или каталог, обозначенный этим абстрактным именем пути, и возвращает значение true или false.deleteOnExit()
: Этот метод запрашивает удаление файла или каталога, обозначенного этим абстрактным именем пути, при завершении работы виртуальной машины, и этот метод является недействительным.существует()
: Этот метод проверяет, существует ли файл или каталог, обозначенный этим абстрактным именем пути, или нет, и на основе того, что он вернет либо true, либо false.getAbsoluteFile()
: Этот метод возвращает абсолютную форму этого абстрактного пути.getAbsolutePath()
: Этот метод возвращает абсолютную строку пути этого абстрактного пути.getCanonicalFile()
: Этот метод возвращает каноническую форму этого абстрактного пути.getCanonicalPath()
: Этот метод возвращает строку канонического пути этого абстрактного пути.getName()
: Этот метод возвращает имя файла или каталога, обозначенного этим абстрактным именем пути.isDirectory()
: Этот метод проверяет, является ли файл, обозначенный этим абстрактным именем пути, каталогом или нет, и на основе этого он вернет либо true, либо false.is File()
: Этот метод проверяет, является ли файл, обозначенный этим абстрактным путем, обычным файлом или нет, и на основании этого он вернет либо true, либо false.является скрытым()
: Этот метод проверяет, является ли файл, обозначенный этим абстрактным путем, скрытым файлом или нет, и на основании этого он вернет либо true, либо false.list()
: Этот метод возвращает массив строк, содержащий имена файлов или каталогов в каталоге, обозначенном этим абстрактным именем пути.listFiles()
: Этот метод возвращает массив абстрактных имен путей, обозначающих файлы в каталоге, обозначенном этим абстрактным именем пути.mkdir()
: Этот метод создает каталог с именем этого абстрактного пути и возвращает значение true или false.renameTo(File dest)
: Этот метод переименовывает файл, обозначенный этим абстрактным именем пути, и возвращает значение true или false.setReadable(логически читаемый)
: Этот метод устанавливает разрешение владельца на чтение для этого абстрактного пути и возвращает значение true или false.setReadable(логически читаемый, логический только для владельца)
: Этот метод устанавливает разрешение владельца или всех на чтение для этого абстрактного пути и возвращает либо true, либо false.setReadOnly()
: Этот метод помечает файл или каталог с именем этого абстрактного пути, чтобы разрешались только операции чтения, и возвращает значение true или false.setWritable(логическая запись)
: Этот метод устанавливает разрешение владельца на запись для этого абстрактного пути и возвращает значение true или false.
Давайте теперь рассмотрим некоторые операции обработки файлов java.
Создать Новый Файл
Класс файлов Java предоставляет метод createNewFile ()
, который автоматически создает новый пустой файл с именем по этому абстрактному пути, если и только если файл с таким именем не существует.
Этот метод возвращает true
, если создан новый файл, и false
, если файл уже существует, и он выдает исключение java.io.IOException
, когда он не может создать файл.
Давайте взглянем на приведенную ниже программу для создания нового файла.
package com.journaldev.examples; import java.io.File; import java.io.IOException; /** * Java Create File Program * * @author pankaj * */ public class FileCreateExample { public static void main(String[] args) { //initialize File constructor File file = new File("D:/data/file.txt"); try { boolean createFile = file.createNewFile(); if (createFile) { System.out.println("New File is created."); }else { System.out.println("File already exists."); } } catch (IOException e) { e.printStackTrace(); } } }
Проверьте этот пост, чтобы узнать больше о создании нового файла на Java .
Создать Временный Файл
Класс файлов Java предоставляет статический createTempFile()
метод для создания временного файла, и этот метод имеет два варианта – createTempFile(префикс строки, суффикс строки)
и createTempFile(префикс строки, суффикс строки, каталог файла)
.
package com.journaldev.examples; import java.io.File; import java.io.IOException; /** * Java Create Temporary File Program * * @author pankaj * */ public class CreateTempFileExample { public static void main(String[] args) { try { File tempFile = File.createTempFile("tempFile", ".tmp"); System.out.println("Temp File Path : "+tempFile.getAbsolutePath()); File directory = new File("D:/data"); File tempFile1 = File.createTempFile("tempFile", ".tmp", directory); System.out.println("Temp File Path : "+tempFile1.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } } }
Выходные данные вышеупомянутой программы приведены ниже:
Temp File Path : C:\Users\pankaj\AppData\Local\Temp\tempFile4343440774354944188.tmp Temp File Path : D:\data\tempFile908226099795027557.tmp
Проверьте Права Доступа к Файлам
Класс файлов Java предоставляет несколько методов для проверки прав доступа к файлам (Выполнение/Чтение/Запись) – CanExecute()
, CanRead()
и CanWrite()
.
package com.journaldev.examples; import java.io.File; /** * Java Check File Permission Program * * @author pankaj * */ public class FilePermissionExample { public static void main(String[] args) { //initialize File constructor File file = new File("D:/data/file.txt"); System.out.println("File is readable? "+file.canRead()); System.out.println("File is writable? "+file.canWrite()); System.out.println("File is executable? "+file.canExecute()); } }
Проверьте этот пост для получения дополнительной информации о разрешениях на файлы Java .
Проверить, существует ли файл уже?
Класс файлов Java предоставляет метод exists ()
, который проверяет, существует файл или каталог или нет.
Этот метод возвращает значение true, если файл или каталог существуют, или возвращает значение false.
package com.journaldev.examples; import java.io.File; /** * Java Check for File Exists Program * * @author pankaj * */ public class CheckForFileExistExample { public static void main(String[] args) { // initialize File constructor File file = new File("D:/data/file.txt"); System.out.println("File Exists : "+file.exists()); File nonExistfile = new File("D:/data/nofile.txt"); System.out.println("File Exists : "+nonExistfile.exists()); } }
Как проверить, является ли файл каталогом?
Класс файлов Java предоставляет метод isDirectory ()
, который проверяет, является ли файл каталогом или нет. Если это каталог, то он вернет значение true или false.
package com.journaldev.examples; import java.io.File; /** * Java Check if File is Directory Program * * @author pankaj * */ public class CheckFileIsDirectoryExample { public static void main(String[] args) { // initialize File constructor File file = new File("D:/data/"); System.out.println("IS Directory? : "+file.isDirectory()); File file2 = new File("D:/data/file.txt"); System.out.println("IS Directory? : "+file2.isDirectory()); } }
Выходные данные вышеупомянутой программы приведены ниже:
IS Directory? : true IS Directory? : false
Разделитель Путей к файлу
Класс файлов Java содержит четыре статические переменные-разделителя для разделителей путей:
разделитель путей
: Это символ разделителя путей, зависящий от системы, представленный в виде строки.pathSeparatorChar
: Это символ разделителя путей, зависящий от системы.разделитель
: Это зависящий от системы символ разделителя имен по умолчанию, представленный в виде строки.Разделительчар
: Это зависящий от системы символ разделителя имен по умолчанию.
package com.journaldev.examples; import java.io.File; /** * Java File separator Program * * @author pankaj * */ public class FileSeparatorExample { public static void main(String[] args) { System.out.println("separator = "+File.separator); System.out.println("separatorChar = "+File.separatorChar); System.out.println("pathSeparator = "+File.pathSeparator); System.out.println("pathSeparatorChar = "+File.pathSeparatorChar); } }
Вывод вышеуказанной программы в системе Windows:
separator = \ separatorChar = \ pathSeparator = ; pathSeparatorChar = ;
Проверьте этот пост, чтобы узнать больше о Разделителе путей к файлам Java .
Абсолютный и Канонический Путь к файлу Java
Класс файлов Java предоставляет два метода для извлечения абсолютного и канонического пути – getAbsolutePath()
и getCanonicalPath()
. Приведенный ниже пример кода устранит любую путаницу вокруг разницы между ними.
package com.journaldev.examples; import java.io.File; import java.io.IOException; public class AbsoluteAndCanonicalPathExample { public static void main(String[] args) throws IOException { File file = new File("/Users/pankaj/source.txt"); File file1 = new File("/Users/pankaj/temp/../source.txt"); System.out.println("Absolute Path : " + file.getAbsolutePath()); System.out.println("Canonical Path : " + file.getCanonicalPath()); System.out.println("Absolute Path : " + file1.getAbsolutePath()); System.out.println("Canonical Path : " + file1.getCanonicalPath()); } }
Результатом работы вышеуказанной программы является:
Absolute Path : /Users/pankaj/source.txt Canonical Path : /Users/pankaj/source.txt Absolute Path : /Users/pankaj/temp/../source.txt Canonical Path : /Users/pankaj/source.txt
Удалить файл на Java
Класс файлов Java предоставляет метод delete()
, который удаляет файл или каталог, обозначенный этим абстрактным именем пути. Если это каталог, то он должен быть пустым, иначе он не будет удален. Этот метод возвращает значение true, если файл удаляется, или возвращает значение false.
package com.journaldev.examples; import java.io.File; /** * Java File delete Example * * @author pankaj * */ public class FileDeleteExample { public static void main(String[] args) { // initialize File constructor File file = new File("D:/data/file.txt"); boolean delete = file.delete(); if (delete) { System.out.println("File Deleted"); } else { System.out.println("File not Deleted"); } } }
Создание Каталогов
Класс файлов Java предоставляет два метода для создания каталогов, которые приведены ниже.
mkdir()
: Этот метод создает каталог, названный этим абстрактным именем пути. Он создает только один каталог и возвращает значение true, если каталог создается, или возвращает значение false.mkdirs()
: Этот метод создает каталог с именем этого абстрактного пути, включая подкаталоги, и возвращает значение true, если каталоги создаются, или возвращает значение false.
package com.journaldev.examples; import java.io.File; /** * Java Create Direcories Example * * @author pankaj * */ public class CreateDirectoriesExample { public static void main(String[] args) { // initialize File constructor File file = new File("D:/pankaj/"); boolean created = file.mkdir(); if (created) { System.out.println("Directory created"); } else { System.out.println("Directory is not created"); } //create directories including sub directories File file2 = new File("D:/pankaj/data/java"); boolean creatSub = file2.mkdirs(); if (creatSub) { System.out.println("Directory including sub directories created"); } else { System.out.println("Directory including sub directories are not created"); } } }
Создание каталогов с помощью класса Files
класс java.nio.Files
предоставляет два статических метода – CreateDirectory()
и createDirectories()
для создания каталогов.
package com.journaldev.examples; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; /** * Java Create Direcories Using Java 7 Example * * @author pankaj * */ public class CreateDirectoriesExample { public static void main(String[] args) { Path path = Paths.get("D:/java7"); Path subPath = Paths.get("D:/java7/createdir/data"); try { Path dirPath = Files.createDirectory(path); Path subdirPath = Files.createDirectories(subPath); System.out.println("Directory Path : "+dirPath); System.out.println("Directory Including sub Directories Path : "+subdirPath); } catch (IOException e) { e.printStackTrace(); } } }
Если каталог уже существует, он будет выдавать java.nio.файл.Исключение FileAlreadyExistsException исключение.
package com.journaldev.examples; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; /** * Java Create Direcories Using Java 7 Example * * @author pankaj * */ public class CreateDirectoriesExample { public static void main(String[] args) { Path path = Paths.get("D:/pankaj"); try { Files.createDirectory(path); } catch (IOException e) { e.printStackTrace(); } } }
Исключением, вызванным вышеуказанной программой, является:
java.nio.file.FileAlreadyExistsException: D:\pankaj at sun.nio.fs.WindowsException.translateToIOException(Unknown Source) at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) at sun.nio.fs.WindowsFileSystemProvider.createDirectory(Unknown Source) at java.nio.file.Files.createDirectory(Unknown Source) at com.journaldev.examples.CreateDirectoriesExample.main(CreateDirectoriesExample.java:20)
Список файлов в каталоге
Мы можем использовать метод listFiles ()
, который возвращает массив абстрактных имен путей, обозначающих файлы в каталоге.
package com.journaldev.examples; import java.io.File; /** * Java Fetch List of File from Directory Example * * @author pankaj * */ public class FileListInDirectoryExample { public static void main(String[] args) { // initialize File constructor File dir = new File("D:/pankaj"); File[] files = dir.listFiles(); System.out.println("Files in Directory:"); for (File file : files) { System.out.println(file.getAbsolutePath()); } } }
Это все для класса файлов java. Ознакомьтесь с Учебником по вводу-вводу Java , чтобы узнать больше о классе файлов java и других интересных классах java.io
посылка.