Класс File
- Все реализуемые интерфейсы:
Serializable, Comparable<File>
public class File extends Object implements Serializable, Comparable<File>
Пользовательские интерфейсы и операционные системы используют зависящие от системы строки путей для именования файлов и каталогов. Этот класс предоставляет абстрактное, независимое от системы представление иерархических путей. Абстрактный путь состоит из двух компонентов:
- Необязательная зависящая от системы строка префикса, например обозначение диска,
"/"для корневого каталога UNIX или"\\\\"для пути UNC в Microsoft Windows, и - Последовательность из нуля или более строковых имен.
Преобразование строки пути в абстрактный путь и обратно по своей природе зависит от системы. При преобразовании абстрактного пути в строку пути каждое имя отделяется от следующего одним символом-разделителем по умолчанию. Символ-разделитель имен по умолчанию задается системным свойством file.separator и доступен в общедоступных статических полях separator и separatorChar этого класса. При преобразовании строки пути в абстрактный путь имена в ней могут разделяться символом-разделителем имен по умолчанию или любым другим символом-разделителем имен, поддерживаемым базовой системой.
Путь, как абстрактный, так и представленный строкой, может быть абсолютным или относительным. Абсолютный путь является полным: для определения местоположения обозначаемого им файла не требуется никакой другой информации. Относительный путь, напротив, необходимо интерпретировать с учетом информации, полученной из другого пути. По умолчанию классы пакета java.io всегда разрешают относительные пути относительно каталога текущего пользователя. Этот каталог задается системным свойством user.dir и обычно является каталогом, из которого была запущена виртуальная машина Java.
Если не указано иное, символические ссылки автоматически перенаправляются на целевой объект ссылки независимо от того, заданы ли они строкой пути или объектом File.
Родительский каталог абстрактного пути можно получить, вызвав метод getParent() этого класса; он состоит из префикса пути и всех имен в его последовательности, кроме последнего. Абсолютный путь каждого каталога является предком любого объекта File с абсолютным абстрактным путем, начинающимся с абсолютного пути этого каталога. Например, каталог, обозначаемый абстрактным путем "/usr", является предком каталога, обозначаемого путем "/usr/local/bin".
Понятие префикса используется для обработки корневых каталогов на платформах UNIX, а также обозначений дисков, корневых каталогов и путей UNC на платформах Microsoft Windows следующим образом:
- На платформах UNIX префикс абсолютного пути всегда равен
"/". У относительных путей префикса нет. Абстрактный путь, обозначающий корневой каталог, имеет префикс"/"и пустую последовательность имен. - На платформах Microsoft Windows префикс пути, содержащего обозначение диска, состоит из буквы диска, за которой следует
":"и, возможно,"\\", если путь абсолютный. Префикс пути UNC —"\\\\"; имя хоста и имя общего ресурса являются первыми двумя именами в последовательности имен. Относительный путь, в котором не указан диск, не имеет префикса.
Экземпляры этого класса могут обозначать или не обозначать реальный объект файловой системы, например файл или каталог. Если такой объект существует, он находится в разделе. Раздел — это зависящая от операционной системы часть хранилища, предназначенная для файловой системы. Одно устройство хранения (например, физический диск, флеш-память или CD-ROM) может содержать несколько разделов. Объект, если он существует, находится в разделе, именуемом одним из предков абсолютной формы этого пути.
Файловая система может ограничивать определенные операции с реальным объектом файловой системы, например чтение, запись и выполнение. Такие ограничения в совокупности называются правами доступа. Файловая система может задавать для одного объекта несколько наборов прав доступа. Например, один набор может применяться к владельцу объекта, а другой — ко всем остальным пользователям. Права доступа к объекту могут привести к сбою некоторых методов этого класса.
Экземпляры класса File неизменяемы: после создания абстрактный путь, представленный объектом File, никогда не изменится.
Взаимодействие с пакетом java.nio.file
Пакет java.nio.file определяет интерфейсы и классы, позволяющие виртуальной машине Java обращаться к файлам, атрибутам файлов и файловым системам. Этот API может помочь преодолеть многие ограничения класса java.io.File. Метод toPath можно использовать для получения объекта Path, использующего абстрактный путь, представленный объектом File, для поиска файла. Полученный объект Path можно использовать с классом Files, чтобы получить более эффективный и расширенный доступ к дополнительным операциям с файлами и атрибутам файлов, а также к исключениям ввода-вывода, помогающим диагностировать ошибки при сбое операции с файлом.
- Начиная с:
- 1.0
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
pathSeparator |
Зависящий от системы символ-разделитель путей, представленный в виде строки для удобства. |
static final char |
pathSeparatorChar |
Зависящий от системы символ-разделитель путей. |
static final String |
separator |
Зависящий от системы символ-разделитель имен по умолчанию, представленный в виде строки для удобства. |
static final char |
separatorChar |
Зависящий от системы символ-разделитель имен по умолчанию. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
File |
Создает новый экземпляр File из родительского абстрактного пути и строкового пути дочернего элемента. |
File |
Создает новый экземпляр File, преобразуя заданную строку пути в абстрактный путь. |
File |
Создает новый экземпляр File из строки пути родительского элемента и строки пути дочернего элемента. |
File |
Создает новый экземпляр File, преобразуя заданный URI file: в абстрактный путь. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
canExecute() |
Проверяет, может ли приложение выполнить файл, обозначенный этим абстрактным путем. |
boolean |
canRead() |
Проверяет, может ли приложение прочитать файл, обозначенный этим абстрактным путем. |
boolean |
canWrite() |
Проверяет, может ли приложение изменить файл, обозначенный этим абстрактным путем. |
int |
compareTo |
Сравнивает два абстрактных пути в лексикографическом порядке. |
boolean |
createNewFile() |
Атомарно создает новый пустой файл, обозначенный этим абстрактным путем, только если файл с таким именем еще не существует. |
static File |
createTempFile |
Создает пустой файл в каталоге временных файлов по умолчанию, используя заданные префикс и суффикс для формирования его имени. |
static File |
createTempFile |
Создает новый пустой файл в указанном каталоге, используя заданные строки префикса и суффикса для формирования его имени. |
boolean |
delete() |
Удаляет файл или каталог, обозначенный этим абстрактным путем. |
void |
deleteOnExit() |
Запрашивает удаление файла или каталога, обозначенного этим абстрактным путем, при завершении работы виртуальной машины. |
boolean |
equals |
Проверяет равенство этого абстрактного пути заданному объекту. |
boolean |
exists() |
Проверяет, существует ли файл или каталог, обозначенный этим абстрактным путем. |
File |
getAbsoluteFile() |
Возвращает абсолютную форму этого абстрактного пути. |
String |
getAbsolutePath() |
Возвращает строку абсолютного пути для этого абстрактного пути. |
File |
getCanonicalFile() |
Возвращает каноническую форму этого абстрактного пути. |
String |
getCanonicalPath() |
Возвращает строку канонического пути для этого абстрактного пути. |
long |
getFreeSpace() |
Возвращает количество нераспределенных байтов в разделе, именуемом этим абстрактным путем. |
String |
getName() |
Возвращает имя файла или каталога, обозначенного этим абстрактным путем. |
String |
getParent() |
Возвращает строку пути родительского каталога этого абстрактного пути или null, если этот путь не обозначает родительский каталог. |
File |
getParentFile() |
Возвращает абстрактный путь родительского каталога этого абстрактного пути или null, если этот путь не обозначает родительский каталог. |
String |
getPath() |
Преобразует этот абстрактный путь в строку пути. |
long |
getTotalSpace() |
Возвращает размер раздела, именуемого этим абстрактным путем. |
long |
getUsableSpace() |
Возвращает количество байтов, доступных этой виртуальной машине в разделе, именуемом этим абстрактным путем. |
int |
hashCode() |
Вычисляет хеш-код этого абстрактного пути. |
boolean |
isAbsolute() |
Проверяет, является ли этот абстрактный путь абсолютным. |
boolean |
isDirectory() |
Проверяет, является ли файл, обозначенный этим абстрактным путем, каталогом. |
boolean |
isFile() |
Проверяет, является ли файл, обозначенный этим абстрактным путем, обычным файлом. |
boolean |
isHidden() |
Проверяет, является ли файл, именуемый этим абстрактным путем, скрытым. |
long |
lastModified() |
Возвращает время последнего изменения файла, обозначенного этим абстрактным путем. |
long |
length() |
Возвращает длину файла, обозначенного этим абстрактным путем. |
String[] |
list() |
Возвращает массив строк с именами файлов и каталогов в каталоге, обозначенном этим абстрактным путем. |
String[] |
list |
Возвращает массив строк с именами файлов и каталогов в каталоге, обозначенном этим абстрактным путем и соответствующих указанному фильтру. |
File[] |
listFiles() |
Возвращает массив абстрактных путей, обозначающих файлы в каталоге, обозначенном этим абстрактным путем. |
File[] |
listFiles |
Возвращает массив абстрактных путей, обозначающих файлы и каталоги в каталоге, обозначенном этим абстрактным путем и соответствующих указанному фильтру. |
File[] |
listFiles |
Возвращает массив абстрактных путей, обозначающих файлы и каталоги в каталоге, обозначенном этим абстрактным путем и соответствующих указанному фильтру. |
static File[] |
listRoots() |
Перечисляет доступные корневые каталоги файловой системы. |
boolean |
mkdir() |
Создает каталог, именуемый этим абстрактным путем. |
boolean |
mkdirs() |
Создает каталог, именуемый этим абстрактным путем, включая все необходимые несуществующие родительские каталоги. |
boolean |
renameTo |
Переименовывает файл, обозначенный этим абстрактным путем. |
boolean |
setExecutable |
Вспомогательный метод для установки права на выполнение для владельца этого абстрактного пути. |
boolean |
setExecutable |
Устанавливает право на выполнение для владельца или всех пользователей этого абстрактного пути. |
boolean |
setLastModified |
Устанавливает время последнего изменения файла или каталога, именуемого этим абстрактным путем. |
boolean |
setReadable |
Вспомогательный метод для установки права на чтение для владельца этого абстрактного пути. |
boolean |
setReadable |
Устанавливает право на чтение для владельца или всех пользователей этого абстрактного пути. |
boolean |
setReadOnly() |
Устанавливает для файла или каталога, именуемого этим абстрактным путем, режим, разрешающий только операции чтения. |
boolean |
setWritable |
Вспомогательный метод для установки права на запись для владельца этого абстрактного пути. |
boolean |
setWritable |
Устанавливает право на запись для владельца или всех пользователей этого абстрактного пути. |
Path |
toPath() |
Возвращает объект java.nio.file.Path, созданный на основе этого абстрактного пути. |
String |
toString() |
Возвращает строку пути для этого абстрактного пути. |
URI |
toURI() |
Создает URI file:, представляющий этот абстрактный путь. |
URL |
toURL() |
Устарело. Этот метод не выполняет автоматическое экранирование символов, недопустимых в URL. |
Подробное описание полей
separatorChar
public static final char separatorChar
file.separator. В системах UNIX значение этого поля — '/'; в системах Microsoft Windows — '\\'.- См. также:
separator
public static final String separator
separatorChar.pathSeparatorChar
public static final char pathSeparatorChar
path.separator. Этот символ используется для разделения имён файлов в последовательности файлов, заданной как список путей. В системах UNIX этим символом является ':'; в системах Microsoft Windows — ';'.- См. также:
pathSeparator
public static final String pathSeparator
pathSeparatorChar.Подробное описание конструкторов
File
public File(String pathname)
File, преобразуя заданную строку пути в абстрактный путь. Если заданная строка пуста, результатом будет пустой абстрактный путь.- Параметры:
-
pathname— строка пути - Выбрасывает:
-
NullPointerException— если аргументpathnameимеет значениеnull
File
public File(String parent, String child)
File из строки родительского пути и строки дочернего пути. Если parent имеет значение null, новый экземпляр File создаётся так, как если бы для заданной строки пути child был вызван конструктор File с одним аргументом.
В противном случае строка пути parent обозначает каталог, а строка пути child — каталог или файл. Если строка пути child является абсолютной, она преобразуется в относительный путь способом, зависящим от системы. Если parent — пустая строка, новый экземпляр File создаётся путём преобразования child в абстрактный путь и разрешения результата относительно системного каталога по умолчанию. В противном случае каждая строка пути преобразуется в абстрактный путь, а дочерний абстрактный путь разрешается относительно родительского.
- Параметры:
-
parent— строка родительского пути -
child— строка дочернего пути - Выбрасывает:
-
NullPointerException— еслиchildимеет значениеnull
File
public File(File parent, String child)
File из родительского абстрактного пути и строки дочернего пути. Если parent имеет значение null, новый экземпляр File создаётся так, как если бы для заданной строки пути child был вызван конструктор File с одним аргументом.
В противном случае абстрактный путь parent обозначает каталог, а строка пути child — каталог или файл. Если строка пути child является абсолютной, она преобразуется в относительный путь способом, зависящим от системы. Если parent — пустой абстрактный путь, новый экземпляр File создаётся путём преобразования child в абстрактный путь и разрешения результата относительно системного каталога по умолчанию. В противном случае каждая строка пути преобразуется в абстрактный путь, а дочерний абстрактный путь разрешается относительно родительского.
- Параметры:
-
parent— родительский абстрактный путь -
child— строка дочернего пути - Выбрасывает:
-
NullPointerException— еслиchildимеет значениеnull
File
public File(URI uri)
File, преобразуя заданный URI file: в абстрактный путь. Точная форма URI file: зависит от системы, поэтому преобразование, выполняемое этим конструктором, также зависит от системы.
Для заданного абстрактного пути f гарантируется, что
при условии, что исходный абстрактный путь, URI и новый абстрактный путь созданы в одной и той же виртуальной машине Java (возможно, при разных её запусках). Однако это соотношение обычно не выполняется, когда URInew File(f.ftoURI()).equals(.getAbsoluteFile())
file:, созданный в виртуальной машине на одной операционной системе, преобразуется в абстрактный путь в виртуальной машине на другой операционной системе.- Параметры:
-
uri— абсолютный иерархический URI со схемой"file", непустым компонентом пути и неопределёнными компонентами полномочий, запроса и фрагмента - Выбрасывает:
-
NullPointerException— еслиuriимеет значениеnull -
IllegalArgumentException— если предварительные условия для параметра не соблюдены - Начиная с версии:
- 1.4
- См. также:
Подробное описание методов
getName
public String getName()
- Возвращает:
- Имя файла или каталога, обозначенного этим абстрактным путём, либо пустую строку, если последовательность имён этого пути пуста
getParent
public String getParent()
null, если этот путь не указывает на родительский каталог. Родительский элемент абстрактного пути состоит из префикса пути (если он есть) и всех имён в последовательности имён пути, кроме последнего. Если последовательность имён пуста, путь не указывает на родительский каталог.
- Возвращает:
- Строку пути родительского каталога, на который указывает этот абстрактный путь, или
null, если этот путь не указывает на родительский элемент
getParentFile
public File getParentFile()
null, если этот путь не указывает на родительский каталог. Родительский элемент абстрактного пути состоит из префикса пути (если он есть) и всех имён в последовательности имён пути, кроме последнего. Если последовательность имён пуста, путь не указывает на родительский каталог.
- Возвращает:
- Абстрактный путь родительского каталога, на который указывает этот абстрактный путь, или
null, если этот путь не указывает на родительский элемент - Начиная с версии:
- 1.2
getPath
public String getPath()
default name-separator character.- Возвращает:
- Строковое представление этого абстрактного пути
isAbsolute
public boolean isAbsolute()
"/". В системах Microsoft Windows путь является абсолютным, если его префикс — обозначение диска, за которым следует "\\", или если его префикс — "\\\\".- Возвращает:
-
true, если этот абстрактный путь является абсолютным; в противном случае —false
getAbsolutePath
public String getAbsolutePath()
Если этот абстрактный путь уже является абсолютным, строка пути просто возвращается, как если бы был вызван метод getPath(). Если этот абстрактный путь является пустым абстрактным путём, возвращается строка пути текущего пользовательского каталога, заданного системным свойством user.dir. В противном случае этот путь разрешается способом, зависящим от системы. В системах UNIX относительный путь становится абсолютным после разрешения относительно текущего пользовательского каталога. В системах Microsoft Windows относительный путь становится абсолютным после разрешения относительно текущего каталога диска, указанного в пути (если он указан); в противном случае он разрешается относительно текущего пользовательского каталога.
- Возвращает:
- Строку абсолютного пути, указывающую на тот же файл или каталог, что и этот абстрактный путь
- См. также:
getAbsoluteFile
public File getAbsoluteFile()
new File(this.getAbsolutePath()).- Возвращает:
- Абсолютный абстрактный путь, указывающий на тот же файл или каталог, что и этот абстрактный путь
- Начиная с версии:
- 1.2
getCanonicalPath
public String getCanonicalPath() throws IOException
Канонический путь является абсолютным и уникальным. Точное определение канонической формы зависит от системы. При необходимости этот метод сначала преобразует путь в абсолютную форму, как если бы был вызван метод getAbsolutePath(), а затем отображает его в уникальную форму способом, зависящим от системы. Обычно это включает удаление избыточных имён, таких как "." и "..", разрешение символических ссылок и приведение букв дисков к стандартному регистру (на платформах Microsoft Windows).
Для каждого пути, обозначающего существующий файл или каталог, существует уникальная каноническая форма. Уникальная каноническая форма существует также для каждого пути, обозначающего несуществующий файл или каталог. Каноническая форма пути к несуществующему файлу или каталогу может отличаться от канонической формы того же пути после создания файла или каталога. Аналогично, каноническая форма пути к существующему файлу или каталогу может отличаться от канонической формы того же пути после удаления файла или каталога.
- Возвращает:
- Строку канонического пути, указывающую на тот же файл или каталог, что и этот абстрактный путь
- Выбрасывает:
-
IOException— при возникновении ошибки ввода-вывода, что возможно, поскольку для построения канонического пути может потребоваться запрос к файловой системе - Начиная с версии:
- 1.1
- См. также:
getCanonicalFile
public File getCanonicalFile() throws IOException
new File(this.getCanonicalPath()).- Возвращает:
- Строку канонического пути, указывающую на тот же файл или каталог, что и этот абстрактный путь
- Выбрасывает:
-
IOException— при возникновении ошибки ввода-вывода, что возможно, поскольку для построения канонического пути может потребоваться запрос к файловой системе - Начиная с версии:
- 1.2
- См. также:
toURL
@Deprecated public URL toURL() throws MalformedURLException
file:. Точная форма URL зависит от системы. Если удаётся определить, что файл, обозначенный этим абстрактным путём, является каталогом, результирующий URL будет заканчиваться косой чертой.- Возвращает:
- Объект URL, представляющий эквивалентный URL файла
- Выбрасывает:
-
MalformedURLException— если путь не удаётся разобрать как URL - Начиная с версии:
- 1.2
- См. также:
toURI
public URI toURI()
file:, представляющий этот абстрактный путь. Точная форма URI зависит от системы. Если удаётся определить, что файл, обозначенный этим абстрактным путём, является каталогом, результирующий URI будет заканчиваться косой чертой.
Для заданного абстрактного пути f гарантируется, что
при условии, что исходный абстрактный путь, URI и новый абстрактный путь созданы в одной и той же виртуальной машине Java (возможно, при разных её запусках). Однако из-за зависимости абстрактных путей от системы это соотношение обычно не выполняется, когда URInewfFile(.toURI()).equals(f.getAbsoluteFile())
file:, созданный в виртуальной машине на одной операционной системе, преобразуется в абстрактный путь в виртуальной машине на другой операционной системе. Обратите внимание: если этот абстрактный путь представляет путь UNC, все компоненты UNC (включая имя сервера) кодируются в пути URI. Компонент полномочий не определён, то есть представлен как null. Класс Path определяет метод toUri, который кодирует имя сервера в компоненте полномочий результирующего URI. Метод toPath можно использовать для получения Path, представляющего этот абстрактный путь.
- Возвращает:
- Абсолютный иерархический URI со схемой
"file", путём, представляющим этот абстрактный путь, и неопределёнными компонентами полномочий, запроса и фрагмента - Начиная с версии:
- 1.4
- См. также:
canRead
public boolean canRead()
true, даже если файл не имеет разрешений на чтение.- Возвращает:
-
trueтогда и только тогда, когда файл, указанный этим абстрактным путём, существует и доступен приложению для чтения; в противном случае —false
canWrite
public boolean canWrite()
true, даже если файл помечен как доступный только для чтения.- Возвращает:
-
trueтогда и только тогда, когда файловая система действительно содержит файл, обозначенный этим абстрактным путём, и приложению разрешена запись в этот файл; в противном случае —false.
exists
public boolean exists()
- Возвращает:
-
trueтогда и только тогда, когда файл или каталог, обозначенный этим абстрактным путём, существует; в противном случае —false
isDirectory
public boolean isDirectory()
Если необходимо отличить исключение ввода-вывода от случая, когда файл не является каталогом, или одновременно получить несколько атрибутов одного файла, можно использовать метод Files.readAttributes.
- Возвращает:
-
trueтогда и только тогда, когда файл, обозначенный этим абстрактным путём, существует и является каталогом; в противном случае —false
isFile
public boolean isFile()
Если необходимо отличить исключение ввода-вывода от случая, когда файл не является обычным файлом, или одновременно получить несколько атрибутов одного файла, можно использовать метод Files.readAttributes.
- Возвращает:
-
trueтогда и только тогда, когда файл, обозначенный этим абстрактным путём, существует и является обычным файлом; в противном случае —false
isHidden
public boolean isHidden()
'.'). В системах Microsoft Windows файл считается скрытым, если в файловой системе он помечен соответствующим образом.- Примечание реализации:
- Если файл является символической ссылкой, то в системах UNIX он считается скрытым, если с точки начинается имя самой ссылки, а не её целевого объекта. В системах Windows символическая ссылка считается скрытой, если в файловой системе так помечен её целевой объект.
- Возвращает:
-
trueтогда и только тогда, когда файл, обозначенный этим абстрактным путём, считается скрытым согласно соглашениям используемой платформы - Начиная с версии:
- 1.2
lastModified
public long lastModified()
- Примечание к API:
- Хотя единицей измерения времени в возвращаемом значении являются миллисекунды, точность этого значения зависит от используемой файловой системы и может быть ниже. Например, некоторые файловые системы используют временные метки с точностью до секунды.
Если необходимо отличить исключение ввода-вывода от случая, когда возвращается
0L, одновременно получить несколько атрибутов одного файла или получить время последнего доступа либо время создания, можно использовать методFiles.readAttributes. Если же требуется только время последнего изменения, вместо него можно использовать методFiles.getLastModifiedTime. - Возвращает:
- Значение
long, представляющее время последнего изменения файла в миллисекундах с начала эпохи (00:00:00 GMT, 1 января 1970 года), или0L, если файл не существует либо произошла ошибка ввода-вывода. Значение может быть отрицательным, указывая количество миллисекунд до начала эпохи
length
public long length()
Если необходимо отличить исключение ввода-вывода от случая, когда возвращается 0L, или одновременно получить несколько атрибутов одного файла, можно использовать метод Files.readAttributes.
- Возвращает:
- Размер файла, обозначенного этим абстрактным путём, в байтах или
0L, если файл не существует. Некоторые операционные системы могут возвращать0Lдля путей, обозначающих системные объекты, например устройства или каналы.
createNewFile
public boolean createNewFile() throws IOException
Примечание: этот метод не следует использовать для блокировки файлов, поскольку надёжно реализовать такой протокол невозможно. Вместо него следует использовать механизм FileLock.
- Возвращает:
-
true, если файл с указанным именем не существует и был успешно создан;false, если файл с указанным именем уже существует - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода - Начиная с версии:
- 1.2
delete
public boolean delete()
Обратите внимание: класс Files определяет метод delete, который выбрасывает IOException, если файл не удаётся удалить. Это полезно для сообщения об ошибке и диагностики причин, по которым файл невозможно удалить.
- Возвращает:
-
trueтогда и только тогда, когда файл или каталог успешно удалён; в противном случае —false
deleteOnExit
public void deleteOnExit()
После отправки запроса на удаление отменить его невозможно. Поэтому этот метод следует использовать с осторожностью.
Примечание: этот метод не следует использовать для блокировки файлов, поскольку надёжно реализовать такой протокол невозможно. Вместо него следует использовать механизм FileLock.
- Начиная с версии:
- 1.2
- См. также:
list
public String[] list()
Если этот абстрактный путь не указывает на каталог, метод возвращает null. В противном случае возвращается массив строк, по одной для каждого файла или каталога в каталоге. Имена самого каталога и его родительского каталога в результат не включаются. Каждая строка содержит имя файла, а не полный путь.
Не гарантируется, что строки с именами в результирующем массиве будут расположены в определённом порядке; в частности, не гарантируется их алфавитный порядок.
Обратите внимание: класс Files определяет метод newDirectoryStream, позволяющий открыть каталог и перебирать имена содержащихся в нём файлов. При работе с очень большими каталогами этот метод может потреблять меньше ресурсов, а при работе с удалёнными каталогами — обеспечивать более быструю реакцию.
- Возвращает:
- Массив строк с именами файлов и каталогов в каталоге, обозначенном этим абстрактным путём. Если каталог пуст, массив также будет пустым. Возвращает
null, если этот абстрактный путь не указывает на каталог или произошла ошибка ввода-вывода.
list
public String[] list(FilenameFilter filter)
list(), за исключением того, что строки в возвращаемом массиве должны соответствовать фильтру. Если заданный filter равен null, принимаются все имена. В противном случае имя соответствует фильтру тогда и только тогда, когда в результате вызова метода фильтра FilenameFilter.accept(File, String) для этого абстрактного пути и имени файла или каталога в обозначенном им каталоге возвращается значение true.- Параметры:
-
filter— фильтр имён файлов - Возвращает:
- Массив строк с именами файлов и каталогов в каталоге, обозначенном этим абстрактным путём, которые были приняты заданным
filter. Массив будет пустым, если каталог пуст или фильтр не принял ни одного имени. Возвращаетnull, если этот абстрактный путь не обозначает каталог или произошла ошибка ввода-вывода. - См. также:
listFiles
public File[] listFiles()
Если этот абстрактный путь не обозначает каталог, метод возвращает null. В противном случае возвращается массив объектов File — по одному для каждого файла или каталога в этом каталоге. Пути, обозначающие сам каталог и его родительский каталог, в результат не включаются. Каждый результирующий абстрактный путь создаётся на основе этого абстрактного пути с помощью конструктора File(File, String). Поэтому если этот путь абсолютный, каждый результирующий путь будет абсолютным; если этот путь относительный, каждый результирующий путь будет относительным к тому же каталогу.
Не гарантируется, что строки имён в результирующем массиве будут расположены в каком-либо определённом порядке; в частности, не гарантируется их расположение в алфавитном порядке.
Обратите внимание, что класс Files определяет метод newDirectoryStream для открытия каталога и перебора имён файлов в нём. При работе с очень большими каталогами это может потребовать меньше ресурсов.
- Возвращает:
- Массив абстрактных путей, обозначающих файлы и каталоги в каталоге, обозначенном этим абстрактным путём. Массив будет пустым, если каталог пуст. Возвращает
null, если этот абстрактный путь не обозначает каталог или произошла ошибка ввода-вывода. - С версии:
- 1.2
listFiles
public File[] listFiles(FilenameFilter filter)
listFiles(), за исключением того, что пути в возвращаемом массиве должны соответствовать фильтру. Если заданный filter равен null, принимаются все пути. В противном случае путь соответствует фильтру тогда и только тогда, когда в результате вызова метода фильтра FilenameFilter.accept(File, String) для этого абстрактного пути и имени файла или каталога в обозначенном им каталоге возвращается значение true.- Параметры:
-
filter— фильтр имён файлов - Возвращает:
- Массив абстрактных путей, обозначающих файлы и каталоги в каталоге, обозначенном этим абстрактным путём. Массив будет пустым, если каталог пуст. Возвращает
null, если этот абстрактный путь не обозначает каталог или произошла ошибка ввода-вывода. - С версии:
- 1.2
- См. также:
listFiles
public File[] listFiles(FileFilter filter)
listFiles(), за исключением того, что пути в возвращаемом массиве должны соответствовать фильтру. Если заданный filter равен null, принимаются все пути. В противном случае путь соответствует фильтру тогда и только тогда, когда в результате вызова метода фильтра FileFilter.accept(File) для этого пути возвращается значение true.- Параметры:
-
filter— файловый фильтр - Возвращает:
- Массив абстрактных путей, обозначающих файлы и каталоги в каталоге, обозначенном этим абстрактным путём. Массив будет пустым, если каталог пуст. Возвращает
null, если этот абстрактный путь не обозначает каталог или произошла ошибка ввода-вывода. - С версии:
- 1.2
- См. также:
mkdir
public boolean mkdir()
- Возвращает:
-
trueтогда и только тогда, когда каталог был создан; в противном случае —false
mkdirs
public boolean mkdirs()
- Возвращает:
-
trueтогда и только тогда, когда каталог был создан вместе со всеми необходимыми родительскими каталогами; в противном случае —false
renameTo
public boolean renameTo(File dest)
Многие аспекты поведения этого метода по своей природе зависят от платформы: операция переименования может не поддерживать перемещение файла из одной файловой системы в другую, может быть неатомарной и может завершиться неудачей, если файл с целевым абстрактным путём уже существует. Всегда следует проверять возвращаемое значение, чтобы убедиться в успешном выполнении операции переименования. Поскольку экземпляры File неизменяемы, этот объект File не изменяется и не начинает обозначать целевой файл или каталог.
Обратите внимание, что класс Files определяет метод move для перемещения или переименования файла независимым от платформы способом.
- Параметры:
-
dest— новый абстрактный путь для именованного файла - Возвращает:
-
trueтогда и только тогда, когда переименование выполнено успешно; в противном случае —false - Выбрасывает:
-
NullPointerException— если параметрdestравенnull
setLastModified
public boolean setLastModified(long time)
Все платформы поддерживают время изменения файла с точностью до секунды, но некоторые обеспечивают более высокую точность. Аргумент будет усечён до поддерживаемой точности. Если операция выполнена успешно и до следующего обращения к файлу над ним не выполнялись другие операции, следующий вызов метода lastModified() вернёт переданный этому методу аргумент time (возможно, усечённый).
- Параметры:
-
time— новое время последнего изменения в миллисекундах с начала эпохи (00:00:00 GMT, 1 января 1970 года) - Возвращает:
-
trueтогда и только тогда, когда операция выполнена успешно; в противном случае —false - Выбрасывает:
-
IllegalArgumentException— если аргумент отрицательный - С версии:
- 1.2
setReadOnly
public boolean setReadOnly()
- Возвращает:
-
trueтогда и только тогда, когда операция выполнена успешно; в противном случае —false - С версии:
- 1.2
setWritable
public boolean setWritable(boolean writable, boolean ownerOnly)
Класс Files определяет методы работы с атрибутами файлов, включая разрешения. Их можно использовать, если требуется более точное управление разрешениями файлов.
- Параметры:
-
writable— еслиtrue, устанавливает разрешение на доступ для выполнения операций записи; еслиfalse— запрещает операции записи -
ownerOnly— еслиtrue, разрешение на запись применяется только к владельцу; в противном случае оно применяется ко всем пользователям. Если базовая файловая система не может различать разрешение на запись владельца и разрешения других пользователей, оно будет применяться ко всем пользователям независимо от этого значения. - Возвращает:
-
trueтогда и только тогда, когда операция выполнена успешно. Операция завершится неудачей, если у пользователя нет разрешения на изменение разрешений доступа для этого абстрактного пути. - С версии:
- 1.6
setWritable
public boolean setWritable(boolean writable)
Вызов этого метода в форме file.setWritable(arg) ведёт себя точно так же, как вызов
file.setWritable(arg, true)
- Параметры:
-
writable— еслиtrue, устанавливает разрешение на доступ для выполнения операций записи; еслиfalse— запрещает операции записи - Возвращает:
-
trueтогда и только тогда, когда операция выполнена успешно. Операция завершится неудачей, если у пользователя нет разрешения на изменение разрешений доступа для этого абстрактного пути. - С версии:
- 1.6
setReadable
public boolean setReadable(boolean readable, boolean ownerOnly)
Класс Files определяет методы работы с атрибутами файлов, включая разрешения. Их можно использовать, если требуется более точное управление разрешениями файлов.
Если платформа поддерживает установку разрешения на чтение файла, но у пользователя нет разрешения на изменение разрешений доступа для этого абстрактного пути, операция завершится неудачей. Если платформа не поддерживает установку разрешения на чтение файла, метод ничего не делает и возвращает значение параметра readable.
- Параметры:
-
readable— еслиtrue, устанавливает разрешение на доступ для выполнения операций чтения; еслиfalse— запрещает операции чтения -
ownerOnly— еслиtrue, разрешение на чтение применяется только к владельцу; в противном случае оно применяется ко всем пользователям. Если базовая файловая система не может различать разрешение на чтение владельца и разрешения других пользователей, оно будет применяться ко всем пользователям независимо от этого значения. - Возвращает:
-
true, если операция выполнена успешно;false, если она завершилась неудачей; или значение параметраreadable, если установка разрешения на чтение не поддерживается. - С версии:
- 1.6
setReadable
public boolean setReadable(boolean readable)
Вызов этого метода в форме file.setReadable(arg) ведёт себя точно так же, как вызов
file.setReadable(arg, true)
Если платформа поддерживает установку разрешения на чтение файла, но у пользователя нет разрешения на изменение разрешений доступа для этого абстрактного пути, операция завершится неудачей. Если платформа не поддерживает установку разрешения на чтение файла, метод ничего не делает и возвращает значение параметра readable.
- Параметры:
-
readable— еслиtrue, устанавливает разрешение на доступ для выполнения операций чтения; еслиfalse— запрещает операции чтения - Возвращает:
-
true, если операция выполнена успешно;false, если она завершилась неудачей; или значение параметраreadable, если установка разрешения на чтение не поддерживается. - С версии:
- 1.6
setExecutable
public boolean setExecutable(boolean executable, boolean ownerOnly)
Класс Files определяет методы работы с атрибутами файлов, включая разрешения. Их можно использовать, если требуется более точное управление разрешениями файлов.
Если платформа поддерживает установку разрешения на выполнение файла, но у пользователя нет разрешения на изменение разрешений доступа для этого абстрактного пути, операция завершится неудачей. Если платформа не поддерживает установку разрешения на выполнение файла, метод ничего не делает и возвращает значение параметра executable.
- Параметры:
-
executable— еслиtrue, устанавливает разрешение на доступ для выполнения операций; еслиfalse— запрещает выполнение -
ownerOnly— еслиtrue, разрешение на выполнение применяется только к владельцу; в противном случае оно применяется ко всем пользователям. Если базовая файловая система не может различать разрешение на выполнение владельца и разрешения других пользователей, оно будет применяться ко всем пользователям независимо от этого значения. - Возвращает:
-
true, если операция выполнена успешно;false, если она завершилась неудачей; или значение параметраexecutable, если установка разрешения на выполнение не поддерживается. - С версии:
- 1.6
setExecutable
public boolean setExecutable(boolean executable)
Вызов этого метода в форме file.setExecutable(arg) ведёт себя точно так же, как вызов
file.setExecutable(arg, true)
Если платформа поддерживает установку разрешения на выполнение файла, но у пользователя нет разрешения на изменение разрешений доступа для этого абстрактного пути, операция завершится неудачей. Если платформа не поддерживает установку разрешения на выполнение файла, метод ничего не делает и возвращает значение параметра executable.
- Параметры:
-
executable— еслиtrue, устанавливает разрешение на доступ для выполнения операций; еслиfalse— запрещает выполнение - Возвращает:
-
true, если операция выполнена успешно;false, если она завершилась неудачей; или значение параметраexecutable, если установка разрешения на выполнение не поддерживается. - С версии:
- 1.6
canExecute
public boolean canExecute()
true, даже если у файла нет разрешения на выполнение.- Возвращает:
-
trueтогда и только тогда, когда абстрактный путь существует и приложению разрешено выполнить файл - С версии:
- 1.6
listRoots
public static File[] listRoots()
Конкретная платформа Java может поддерживать ноль или более иерархически организованных файловых систем. В каждой файловой системе есть каталог root, из которого доступны все остальные файлы этой файловой системы.
Этот метод возвращает массив объектов File, обозначающих корневые каталоги доступных файловых систем. Гарантируется, что канонический путь к любому файлу, физически находящемуся на локальном компьютере, будет начинаться с одного из корней, возвращаемых этим методом. Доступность корневого каталога не гарантируется.
- Примечание по реализации:
- Например, на платформах Windows имеется корневой каталог для каждого активного диска; на платформах UNIX имеется один корневой каталог —
"/". На набор корней файловых систем влияют различные системные операции, например отключение или размонтирование физических либо виртуальных дисков.Канонический путь к файлу, находящемуся на другом компьютере и доступному через протокол удалённой файловой системы, например SMB или NFS, может начинаться с одного из корней, возвращаемых этим методом, а может и не начинаться. Если синтаксис пути к удалённому файлу неотличим от синтаксиса пути к локальному файлу, он будет начинаться с одного из корней, возвращаемых этим методом. Так, например, этим методом будут возвращены объекты
File, обозначающие корневые каталоги подключённых сетевых дисков платформы Windows, тогда как объектыFile, содержащие UNC-пути, возвращены не будут. - Возвращает:
- Массив объектов
File, обозначающих доступные корни файловых систем, илиnull, если набор корней определить не удалось. Массив будет пустым, если корней файловых систем нет. - С версии:
- 1.2
- См. также:
getTotalSpace
public long getTotalSpace()
Long.MAX_VALUE, будет возвращено значение Long.MAX_VALUE.- Возвращает:
- Размер раздела в байтах или
0L, если этот абстрактный путь не обозначает раздел или размер невозможно получить - С версии:
- 1.6
- См. также:
getFreeSpace
public long getFreeSpace()
Long.MAX_VALUE, будет возвращено значение Long.MAX_VALUE. Возвращаемое количество нераспределённых байтов является оценкой, но не гарантией того, что можно использовать большую часть или все эти байты. Скорее всего, это значение будет точным сразу после вызова метода. Любые внешние операции ввода-вывода, в том числе выполняемые в системе за пределами этой виртуальной машины, могут привести к тому, что оно станет неточным. Этот метод не гарантирует успешное выполнение операций записи в данную файловую систему.
- Возвращает:
- Количество нераспределённых байтов в разделе или
0L, если абстрактный путь не обозначает раздел или это количество невозможно получить. Это значение будет меньше или равно общему размеру файловой системы, возвращаемому методомgetTotalSpace(). - С версии:
- 1.6
- См. также:
getUsableSpace
public long getUsableSpace()
Long.MAX_VALUE, будет возвращено значение Long.MAX_VALUE. Если возможно, этот метод проверяет разрешения на запись и другие ограничения операционной системы, поэтому обычно он точнее оценивает, сколько новых данных действительно можно записать, чем метод getFreeSpace(). Возвращаемое количество доступных байтов является оценкой, но не гарантией того, что можно использовать большую часть или все эти байты. Скорее всего, это значение будет точным сразу после вызова метода. Любые внешние операции ввода-вывода, в том числе выполняемые в системе за пределами этой виртуальной машины, могут привести к тому, что оно станет неточным. Этот метод не гарантирует успешное выполнение операций записи в данную файловую систему.
- Возвращает:
- Количество доступных байтов в разделе или
0L, если абстрактный путь не обозначает раздел или это количество невозможно получить. В системах, где эти сведения недоступны, метод эквивалентен вызовуgetFreeSpace(). - С версии:
- 1.6
- См. также:
createTempFile
public static File createTempFile(String prefix, String suffix, File directory) throws IOException
Создаёт новый пустой файл в указанном каталоге, используя заданные строки префикса и суффикса для формирования его имени. Если метод завершится успешно, гарантируется, что:
- Файл, обозначенный возвращаемым абстрактным путём, не существовал до вызова этого метода; и
- Ни этот метод, ни одна из его версий не вернут тот же абстрактный путь повторно в ходе текущего запуска виртуальной машины.
deleteOnExit(). Аргумент prefix должен содержать не менее трёх символов. Рекомендуется использовать короткую и понятную строку префикса, например "hjb" или "mail". Аргумент suffix может быть равен null; в этом случае будет использоваться суффикс ".tmp".
Перед созданием нового файла префикс и суффикс могут быть скорректированы с учётом ограничений базовой платформы. Если префикс слишком длинный, он будет усечён, но первые три символа всегда сохраняются. Если суффикс слишком длинный, он также будет усечён, но если он начинается с точки ('.'), точка и следующие за ней первые три символа всегда сохраняются. После этих корректировок имя нового файла будет сформировано объединением префикса, пяти или более символов, сгенерированных программой, и суффикса.
Если базовая платформа не может создать файл с полученным именем, будет выброшено исключение IOException. Например, это может произойти, если указанный префикс или суффикс содержит один или несколько символов, не поддерживаемых базовой файловой системой.
Если аргумент directory равен null, будет использоваться системный каталог временных файлов по умолчанию. Каталог временных файлов по умолчанию задаётся системным свойством java.io.tmpdir. В системах UNIX обычно используется значение "/tmp" или "/var/tmp"; в системах Microsoft Windows обычно используется "C:\\WINNT\\TEMP". Другое значение этого системного свойства можно задать при запуске виртуальной машины Java, однако программное изменение свойства не гарантирует, что оно повлияет на каталог временных файлов, используемый этим методом.
Если аргумент directory не равен null, а его абстрактный путь допустим и обозначает существующий каталог, доступный для записи, файл будет создан в этом каталоге. В противном случае файл создан не будет, а будет выброшено исключение IOException. Ни при каких обстоятельствах в расположении, указанном аргументом directory, не будет создан каталог.
- Параметры:
-
prefix— строка префикса для формирования имени файла; должна содержать не менее трёх символов -
suffix— строка суффикса для формирования имени файла; может быть равнаnull, в этом случае будет использоваться суффикс".tmp" -
directory— каталог, в котором нужно создать файл, илиnull, если следует использовать каталог временных файлов по умолчанию - Возвращает:
- Абстрактный путь, обозначающий только что созданный пустой файл
- Выбрасывает:
-
IllegalArgumentException— если аргументprefixсодержит менее трёх символов -
IOException— если файл не удалось создать - С версии:
- 1.2
createTempFile
public static File createTempFile(String prefix, String suffix) throws IOException
createTempFile(prefix, suffix, null). Метод Files.createTempFile предоставляет альтернативный способ создания пустого файла в каталоге временных файлов. Файлы, созданные этим методом, могут иметь более строгие права доступа, чем файлы, созданные данным методом, поэтому он может лучше подходить для приложений, чувствительных к безопасности.
- Параметры:
-
prefix— строка префикса, используемая при формировании имени файла; должна содержать не менее трех символов -
suffix— строка суффикса, используемая при формировании имени файла; может бытьnull, в этом случае будет использоваться суффикс".tmp" - Возвращает:
- Абстрактное имя пути, обозначающее вновь созданный пустой файл
- Вызывает исключение:
-
IllegalArgumentException— если аргументprefixсодержит менее трех символов -
IOException— если не удалось создать файл - Начиная с версии:
- 1.2
- См. также:
compareTo
public int compareTo(File pathname)
- Определено в:
-
compareToв интерфейсеComparable<File> - Параметры:
-
pathname— абстрактное имя пути, сравниваемое с этим абстрактным именем пути - Возвращает:
- Ноль, если аргумент равен этому абстрактному имени пути; значение меньше нуля, если это абстрактное имя пути лексикографически меньше аргумента; или значение больше нуля, если это абстрактное имя пути лексикографически больше аргумента
- Начиная с версии:
- 1.2
equals
public boolean equals(Object obj)
true тогда и только тогда, когда аргумент не является null и представляет собой абстрактное имя пути, совпадающее с этим абстрактным именем пути. Равенство двух абстрактных имен путей зависит от используемой операционной системы. В системах UNIX при сравнении имен путей учитывается регистр букв; в системах Microsoft Windows — нет.- Переопределяет:
-
equalsв классеObject - Примечание об API:
- Этот метод проверяет только равенство абстрактных имен путей; он не обращается к файловой системе, и наличие файла не является обязательным.
- Параметры:
-
obj— объект, сравниваемый с этим абстрактным именем пути - Возвращает:
-
trueтогда и только тогда, когда объекты совпадают; в противном случае —false - См. также:
hashCode
public int hashCode()
1234321. В системах Microsoft Windows хеш-код равен исключающему ИЛИ хеш-кода строки имени пути, преобразованной к нижнему регистру, и десятичного значения 1234321. При преобразовании строки имени пути к нижнему регистру локаль не учитывается.toString
toPath
public Path toPath()
java.nio.file.Path, созданный на основе этого абстрактного пути. Полученный объект Path связан с default-filesystem. При первом вызове этот метод работает так, как если бы его вызов был эквивалентен вычислению выражения:
FileSystems.getDefault().getPath(this.getPath());
Path. Если это абстрактное имя пути является пустым, данный метод возвращает Path, который можно использовать для доступа к текущему пользовательскому каталогу.
- Возвращает:
- объект
Path, созданный на основе этого абстрактного пути - Вызывает исключение:
-
InvalidPathException— если из абстрактного пути невозможно создать объектPath(см.FileSystem.getPath) - Начиная с версии:
- 1.7
- См. также:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/File.html