Файловая система

# Base.Filesystem.pwdFunction

pwd() -> AbstractString

Получение текущего рабочего каталога.

См. также описание cd, tempdir.

Примеры

julia> pwd()
"/home/JuliaUser"

julia> cd("/home/JuliaUser/Projects/julia")

julia> pwd()
"/home/JuliaUser/Projects/julia"

# Base.Filesystem.cdMethod

cd(dir::AbstractString=homedir())

Задание текущего рабочего каталога.

См. также описание pwd, mkdir, mkpath, mktempdir.

Примеры

julia> cd("/home/JuliaUser/Projects/julia")

julia> pwd()
"/home/JuliaUser/Projects/julia"

julia> cd()

julia> pwd()
"/home/JuliaUser"

# Base.Filesystem.cdMethod

cd(f::Function, dir::AbstractString=homedir())

Временное изменение текущего рабочего каталога на dir, применение функции f и возврат в исходный каталог.

Примеры

julia> pwd()
"/home/JuliaUser"

julia> cd(readdir, "/home/JuliaUser/Projects/julia")
34-element Array{String,1}:
 ".circleci"
 ".freebsdci.sh"
 ".git"
 ".gitattributes"
 ".github"
 ⋮
 "test"
 "ui"
 "usr"
 "usr-staging"

julia> pwd()
"/home/JuliaUser"

# Base.Filesystem.readdirFunction

readdir(dir::AbstractString=pwd();
    join::Bool = false,
    sort::Bool = true,
) -> Vector{String}

Возвращает имена в каталоге dir или текущем рабочем каталоге, если тот не указан. Если join имеет значение false, readdir возвращает только имена в каталоге в исходном виде; если join имеет значение true, он возвращает joinpath(dir, name) для каждого name, поэтому возвращаемые строки являются полными путями. Чтобы снова получить абсолютные пути, вызовите readdir с абсолютным путем к каталогу и join, имеющим значение true.

По умолчанию readdir сортирует список возвращаемых имен. Чтобы пропустить сортировку имен и получить их в том порядке, в котором они указаны в файловой системе, можно использовать readdir(dir, sort=false).

См. также описание walkdir.

Совместимость: Julia 1.4

Для именованных аргументов join и sort требуется версия Julia не ниже 1.4.

Примеры

julia> cd("/home/JuliaUser/dev/julia")

julia> readdir()
30-element Array{String,1}:
 ".appveyor.yml"
 ".git"
 ".gitattributes"
 ⋮
 "ui"
 "usr"
 "usr-staging"

julia> readdir(join=true)
30-element Array{String,1}:
 "/home/JuliaUser/dev/julia/.appveyor.yml"
 "/home/JuliaUser/dev/julia/.git"
 "/home/JuliaUser/dev/julia/.gitattributes"
 ⋮
 "/home/JuliaUser/dev/julia/ui"
 "/home/JuliaUser/dev/julia/usr"
 "/home/JuliaUser/dev/julia/usr-staging"

julia> readdir("base")
145-element Array{String,1}:
 ".gitignore"
 "Base.jl"
 "Enums.jl"
 ⋮
 "version_git.sh"
 "views.jl"
 "weakkeydict.jl"

julia> readdir("base", join=true)
145-element Array{String,1}:
 "base/.gitignore"
 "base/Base.jl"
 "base/Enums.jl"
 ⋮
 "base/version_git.sh"
 "base/views.jl"
 "base/weakkeydict.jl"```

julia> readdir(abspath("base"), join=true)
145-element Array{String,1}:
 "/home/JuliaUser/dev/julia/base/.gitignore"
 "/home/JuliaUser/dev/julia/base/Base.jl"
 "/home/JuliaUser/dev/julia/base/Enums.jl"
 ⋮
 "/home/JuliaUser/dev/julia/base/version_git.sh"
 "/home/JuliaUser/dev/julia/base/views.jl"
 "/home/JuliaUser/dev/julia/base/weakkeydict.jl"

# Base.Filesystem.walkdirFunction

walkdir(dir; topdown=true, follow_symlinks=false, onerror=throw)

Возвращает итератор, который проходит по дереву каталогов. Итератор возвращает кортеж, содержащий (rootpath, dirs, files). По дереву каталогов можно проходить сверху вниз или снизу вверх. Если walkdir или stat обнаруживает IOError, будет повторно выведена ошибка по умолчанию. Функцию обработки пользовательских ошибок можно предоставить с помощью именованного аргумента onerror. onerror вызывается с IOError в качестве аргумента.

См. также описание readdir.

Примеры

for (root, dirs, files) in walkdir(".")
    println("Directories in $root")
    for dir in dirs
        println(joinpath(root, dir)) # путь к каталогам
    end
    println("Files in $root")
    for file in files
        println(joinpath(root, file)) # путь к файлам
    end
end
julia> mkpath("my/test/dir");

julia> itr = walkdir("my");

julia> (root, dirs, files) = first(itr)
("my", ["test"], String[])

julia> (root, dirs, files) = first(itr)
("my/test", ["dir"], String[])

julia> (root, dirs, files) = first(itr)
("my/test/dir", String[], String[])

# Base.Filesystem.mkdirFunction

mkdir(path::AbstractString; mode::Unsigned = 0o777)

Создает каталог с именем path и mode разрешений. mode по умолчанию имеет значение 0o777, изменяемое текущей маской создания файла. Эта функция никогда не создает больше одного каталога. Если каталог уже существует или некоторые промежуточные каталоги не существуют, эта функция выводит ошибку. См. раздел о mkpath со сведениями о функции, которая создает все необходимые промежуточные каталоги. Возвращает path.

Примеры

julia> mkdir("testingdir")
"testingdir"

julia> cd("testingdir")

julia> pwd()
"/home/JuliaUser/testingdir"

# Base.Filesystem.mkpathFunction

mkpath(path::AbstractString; mode::Unsigned = 0o777)

Создает все промежуточные каталоги в path по мере необходимости. Каталоги создаются с разрешениями mode, имеющим по умолчанию значение 0o777 и изменяемым текущей маской создания файла. В отличие от mkdir, mkpath не выдает ошибку, если path (или его части) уже существует. Однако ошибка выдается, если path (или его части) указывает на существующий файл. Возвращает path.

Если path содержит имя файла, вы, вероятно, захотите использовать mkpath(dirname(path)), чтобы не создавать каталог с использованием имени файла.

Примеры

julia> cd(mktempdir())

julia> mkpath("my/test/dir") # создает три каталога
"my/test/dir"

julia> readdir()
1-element Array{String,1}:
 "my"

julia> cd("my")

julia> readdir()
1-element Array{String,1}:
 "test"

julia> readdir("test")
1-element Array{String,1}:
 "dir"

julia> mkpath("intermediate_dir/actually_a_directory.txt") # создает два каталога
"intermediate_dir/actually_a_directory.txt"

julia> isdir("intermediate_dir/actually_a_directory.txt")
true
hardlink(src::AbstractString, dst::AbstractString)

Создает жесткую ссылку на существующий исходный файл src с именем dst.Место назначения dst не должно существовать.

См. также описание symlink.

Совместимость: Julia 1.8

Этот метод был добавлен в Julia 1.8.

symlink(target::AbstractString, link::AbstractString; dir_target = false)

Создает символьную ссылку на target с именем link.

В Windows символьные ссылки должны быть явным образом объявлены как указывающие на каталог или нет. Если target уже существует, по умолчанию тип link будет обнаруживаться автоматически, однако если target не существует, эта функция по умолчанию будет создавать символьную ссылку на файл, пока dir_target не будет задано значение true. Обратите внимание, что если пользователь задает dir_target, но target существует и является файлом, символьная ссылка на каталог будет по-прежнему создаваться, но разыменование символьной ссылки будет завершаться ошибкой, так же, как если бы пользователь создавал символьную ссылку на файл (путем вызова symlink() с dir_target, имеющим значение false до создания каталога), и пытался разыменовать ее для каталога.

Кроме того, в Windows существует два способа создания ссылки: символьной ссылки и точки соединения. Точки соединения немного более эффективны, но не поддерживают относительные пути, поэтому если запрашивается символьная ссылка относительного каталога (как указано с помощью isabspath(target), возвращающего false), будет использоваться символьная ссылка, в противном случае будет использоваться точка соединения. Создавать символьные ссылки в Windows рекомендуется только после создания файлов или каталогов, на которые они указывают.

См. также описание hardlink.

Эта функция вызывает ошибку в операционных системах, таких как Windows XP, которые не поддерживают мягкие символьные ссылки.

Совместимость: Julia 1.6

Именованный аргумент dir_target был добавлен в Julia 1.6. До этого символьные ссылки на несуществующие пути в Windows всегда были файловыми символьными ссылками, а относительные символьные ссылки на каталоги не поддерживались.

readlink(path::AbstractString) -> AbstractString

Возвращает целевое расположение, на которое указывает символьная ссылка path.

# Base.Filesystem.chmodFunction

chmod(path::AbstractString, mode::Integer; recursive::Bool=false)

Изменяет режим разрешений path на mode. На данный момент поддерживаются только целочисленные mode (например, 0o777). Если recursive=true и путь являются каталогом, все разрешения в этом каталоге будут рекурсивно изменены. Возвращает path.

До Julia 1.6 было невозможно корректно работать с ACL файловой системы в Windows, поэтому в файлах задавались биты только для чтения. Теперь появилась возможность управлять списками ACL.

# Base.Filesystem.chownFunction

chown(path::AbstractString, owner::Integer, group::Integer=-1)

Изменяет владельца и (или) группы path на owner и (или) group. Если для owner или group введено значение -1, соответствующий идентификатор не изменится. На данный момент поддерживаются только целочисленные owner и group. Возвращает path.

# Base.Libc.RawFDType

RawFD

Примитивный тип, который заключает в оболочку дескриптор файла собственной ОС. RawFD можно передавать методам, таким как stat, для обнаружения информации о базовом файле, а также можно использовать для открытия потоков с RawFD, описывающим файл ОС, поддерживающий поток.

# Base.statFunction

stat(file)

Возвращает структуру, поля которой содержат информацию о файле. Поля структуры приведены ниже.

Имя Описание

desc

Путь или дескриптор файла ОС

size

Размер (в байтах) файла

device

Идентификатор устройства, содержащего файл

inode

Номер индексного дескриптора файла

mode

Режим защиты файла

nlink

Число жестких ссылок на файл

uid

Идентификатор пользователя-владельца файла

gid

Идентификатор группы владельца файла

rdev

Если этот файл ссылается на устройство, идентификатор устройства, на которое он ссылается

blksize

Предпочтительный размер блока файловой системы для файла

blocks

Число таких выделенных блоков

mtime

Метка времени Unix, указывающая время последнего изменения файла

ctime

Метка времени Unix, указывающая время изменения метаданных файла

# Base.Filesystem.diskstatFunction

diskstat(path=pwd())

Возвращает статистику в байтах о диске, содержащем файл или каталог, на который указывает path. Если аргументы не переданы, возвращается статистика о диске, содержащем текущий рабочий каталог.

Совместимость: Julia 1.8

Этот метод был добавлен в Julia 1.8.

# Base.Filesystem.lstatFunction

lstat(file)

Аналогична stat, но для символьных ссылок получает информацию для самой ссылки, а не для файла, на который она указывает. Эта функция должна вызываться для пути к файлу, а не файловому объекту или дескриптору файла.

# Base.Filesystem.ctimeFunction

ctime(file)

Эквивалентно stat(file).ctime.

# Base.Filesystem.mtimeFunction

mtime(file)

Эквивалентно stat(file).mtime.

# Base.Filesystem.filemodeFunction

filemode(file)

Эквивалентно stat(file).mode.

# Base.filesizeFunction

filesize(path...)

Эквивалентно stat(file).size.

# Base.Filesystem.upermFunction

uperm(file)

Получает разрешения владельца файла в виде битового поля

Значение Описание

01

Разрешение на выполнение

02

Разрешение на запись

04

Разрешение на чтение

Список разрешенных аргументов см. в разделе о stat.

# Base.Filesystem.gpermFunction

gperm(file)

Аналогична uperm, но получает разрешения группы, владеющей файлом.

# Base.Filesystem.opermFunction

operm(file)

Аналогична uperm, но получает разрешения для пользователей, не являющихся владельцами файла и не входящих в группу, владеющую файлом.

# Base.Filesystem.cpFunction

cp(src::AbstractString, dst::AbstractString; force::Bool=false, follow_symlinks::Bool=false)

Копирует файл, ссылку или каталог из src в dst. force=true сначала удалит существующий dst.

Если follow_symlinks=false и src является символьной ссылкой, dst будет создан в виде символьной ссылки. Если follow_symlinks=true и src является символьной ссылкой, dst будет копией файла или каталога, на который указывает src. Возвращает dst.

Функция cp отличается от команды cp. Функция cp всегда действует на основе предположения, что dst является файлом, в то время как команда выполняет разные операции в зависимости от того, чем является dst — каталогом или файлом. При использовании force=true, когда dst является каталогом, будет потеряно все содержимое, находящееся в каталоге dst, а dst станет файлом с содержимым src.

# Base.downloadFunction

download(url::AbstractString, [path::AbstractString = tempname()]) -> path

Скачивает файл с заданного URL-адреса, сохраняет его в path расположения или, если не указано, по временному пути. Возвращает путь скачанного файла.

Начиная с Julia 1.6, эта функция считается устаревшей и является лишь тонкой оболочкой Downloads.download. В новом коде следует использовать ту функцию напрямую, а не вызывать эту.

# Base.Filesystem.mvFunction

mv(src::AbstractString, dst::AbstractString; force::Bool=false)

Перемещает файл, ссылку или каталог из src в dst. force=true сначала удалит существующий dst. Возвращает dst.

Примеры

julia> write("hello.txt", "world");

julia> mv("hello.txt", "goodbye.txt")
"goodbye.txt"

julia> "hello.txt" in readdir()
false

julia> readline("goodbye.txt")
"world"

julia> write("hello.txt", "world2");

julia> mv("hello.txt", "goodbye.txt")
ERROR: ArgumentError: 'goodbye.txt' exists. `force=true` is required to remove 'goodbye.txt' before moving.
Stacktrace:
 [1] #checkfor_mv_cp_cptree#10(::Bool, ::Function, ::String, ::String, ::String) at ./file.jl:293
[...]

julia> mv("hello.txt", "goodbye.txt", force=true)
"goodbye.txt"

julia> rm("goodbye.txt");

# Base.Filesystem.rmFunction

rm(path::AbstractString; force::Bool=false, recursive::Bool=false)

Удаляет файл, ссылку или пустой каталог по заданному пути. Если передается force=true, несуществующий путь не считается ошибкой. Если передается recursive=true, и путь является каталогом, все содержимое рекурсивно удаляется.

Примеры

julia> mkpath("my/test/dir");

julia> rm("my", recursive=true)

julia> rm("this_file_does_not_exist", force=true)

julia> rm("this_file_does_not_exist")
ERROR: IOError: unlink("this_file_does_not_exist"): no such file or directory (ENOENT)
Stacktrace:
[...]

# Base.Filesystem.touchFunction

Base.touch(::Pidfile.LockMonitor)

Обновляет mtime для блокировки, чтобы указать ее актуальное состояние.

См. также описание ключевого слова refresh в конструкторе mkpidlock.

touch(path::AbstractString)
touch(fd::File)

Обновляет метку времени последнего изменения в файле в соответствии с текущим временем.

Если файл не существует, создается новый файл.

Возвращает path.

Примеры

julia> write("my_little_file", 2);

julia> mtime("my_little_file")
1.5273815391135583e9

julia> touch("my_little_file");

julia> mtime("my_little_file")
1.527381559163435e9

Мы видим, что mtime изменен функцией touch.

# Base.Filesystem.tempnameFunction

tempname(parent=tempdir(); cleanup=true) -> String

Создает путь к временному файлу. Эта функция возвращает только путь, файл не создается. Путь, скорее всего, будет уникальным, но это не гарантируется из-за очень низкой вероятности того, что два одновременных вызова tempname создадут одно и то же имя файла. Имя гарантированно отличается от имен всех файлов, уже существующих на момент вызова tempname.

При вызове без аргументов временное имя будет абсолютным путем к временному имени в системном временном каталоге, заданному tempdir(). Если задан аргумент каталога parent, временный путь будет находиться в этом каталоге.

Параметр cleanup управляет тем, пытается ли процесс автоматически удалить возвращаемый путь при завершении. Обратите внимание, что функция tempname не создает никакого файла или каталога в возвращаемом расположении, поэтому очистка выполняется только после того, как там будет создан файл ли каталог. Если вы это сделаете, и параметр clean имеет значение true, то путь будет удален по завершении процесса.

Совместимость: Julia 1.4

Аргументы parent и cleanup были добавлены в версии 1.4. До Julia 1.4 путь tempname никогда не удалялся по завершении процесса.

В системе безопасности могут возникнуть бреши, если другой процесс получит то же самое имя файла и создаст файл до того, как это сделаете вы. Если такая ситуация вызывает беспокойство, откройте файл с помощью JL_O_EXCL. Кроме того, также рекомендуется использовать mktemp() .

# Base.Filesystem.tempdirFunction

tempdir()

Получает путь временного каталога. В Windows tempdir() использует первую переменную среды, найденную в упорядоченном списке TMP, TEMP, USERPROFILE. Во всех других операционных системах tempdir() использует первую переменную среды, найденную в упорядоченном списке TMPDIR, TMP, TEMP и TEMPDIR. Если ничего не найдено, используется путь "/tmp".

# Base.Filesystem.mktempMethod

mktemp(parent=tempdir(); cleanup=true) -> (path, io)

Возвращает (path, io), где path является путем нового временного файла в parent, а io является объектом открытого файла для этого пути. Параметр cleanup управляет автоматическим удалением временного файла по завершении процесса.

Совместимость: Julia 1.3

Именованный аргумент cleanup был добавлен в Julia 1.3. Кроме того, начиная с версии 1.3, в Julia будут удаляться временные пути, созданные с помощью mktemp, по завершении процесса Julia, если параметру cleanup явно не задано значение false.

# Base.Filesystem.mktempMethod

mktemp(f::Function, parent=tempdir())

Применяет функцию f к результату mktemp(parent) и удаляет временный файл по завершении.

См. также описание mktempdir.

# Base.Filesystem.mktempdirMethod

mktempdir(parent=tempdir(); prefix="jl_", cleanup=true) -> path

Создает временный каталог в каталоге parent с именем, сформированным на основе заданного префикса и случайного суффикса, и возвращает путь к нему. Кроме того, любые конечные символы X могут быть заменены случайными символами. Если parent не существует, возникает ошибка. Параметр cleanup управляет автоматическим удалением временного файла по завершении процесса.

Совместимость: Julia 1.2

Именованный аргумент prefix был добавлен в Julia 1.2.

Совместимость: Julia 1.3

Именованный аргумент cleanup был добавлен в Julia 1.3. Кроме того, начиная с версии 1.3, в Julia будут удаляться временные пути, созданные с помощью mktempdir, по завершении процесса Julia, если параметру cleanup явно не задано значение false.

См. также описание mktemp, mkdir.

# Base.Filesystem.mktempdirMethod

mktempdir(f::Function, parent=tempdir(); prefix="jl_")

Применяет функцию f к результату mktempdir(parent; prefix) и удаляет временный каталог и все его содержимое по завершении.

См. также описание mktemp, mkdir.

Совместимость: Julia 1.2

Именованный аргумент prefix был добавлен в Julia 1.2.

# Base.Filesystem.isblockdevFunction

isblockdev(path) -> Bool

Возвращает true, если path является блочным устройством, в противном случае возвращает false.

# Base.Filesystem.ischardevFunction

ischardev(path) -> Bool

Возвращает true, если path является символьным устройством, в противном случае возвращает false.

# Base.Filesystem.isdirFunction

isdir(path) -> Bool

Возвращает true, если path является каталогом, в противном случае возвращает false.

Примеры

julia> isdir(homedir())
true

julia> isdir("not/a/directory")
false

См. также описание isfile и ispath.

# Base.Filesystem.isfifoFunction

isfifo(path) -> Bool

Возвращает true, если path является FIFO, в противном случае возвращает false.

# Base.Filesystem.isfileFunction

isfile(path) -> Bool

Возвращает true, если path является обычным файлом, в противном случае возвращает false.

Примеры

julia> isfile(homedir())
false

julia> filename = "test_file.txt";

julia> write(filename, "Hello world!");

julia> isfile(filename)
true

julia> rm(filename);

julia> isfile(filename)
false

См. также описание isdir и ispath.

islink(path) -> Bool

Возвращает true, если path является символьной ссылкой, в противном случае возвращает false.

# Base.Filesystem.ismountFunction

ismount(path) -> Bool

Возвращает true, если path является точкой подключения, в противном случае возвращает false.

# Base.Filesystem.ispathFunction

ispath(path) -> Bool

Возвращает true, если допустимая файловая система существует по пути path, в противном случае возвращает false. Это обобщение isfile, isdir и т. д.

# Base.Filesystem.issetgidFunction

issetgid(path) -> Bool

Возвращает true, если для path установлен флаг setgid, в противном случае возвращает false.

# Base.Filesystem.issetuidFunction

issetuid(path) -> Bool

Возвращает true, если для path установлен флаг setuid, в противном случае возвращает false.

# Base.Filesystem.issocketFunction

issocket(path) -> Bool

Возвращает true, если path является сокетом, в противном случае возвращается false.

# Base.Filesystem.isstickyFunction

issticky(path) -> Bool

Возвращает true, если для path задан бит закрепления, в противном случае возвращает false.

# Base.Filesystem.homedirFunction

homedir() -> String

Возвращает домашний каталог текущего пользователя.

homedir определяет домашний каталог с помощью uv_os_homedir libuv. Более подробные сведения (например, об указании домашнего каталога с помощью переменных среды) см. в документации по uv_os_homedir.

# Base.Filesystem.dirnameFunction

dirname(path::AbstractString) -> AbstractString

Получение части каталога пути. Конечные символы ('/' или '') в пути считаются частью пути.

Примеры

julia> dirname("/home/myuser")
"/home"

julia> dirname("/home/myuser/")
"/home/myuser"

См. также описание basename.

# Base.Filesystem.basenameFunction

basename(path::AbstractString) -> AbstractString

Получение части имени файла в пути.

Эта функция немного отличается от программы Unix basename, где конечные слэши игнорируются, то есть $ basename /foo/bar/ возвращает bar, тогда как basename в Julia возвращает пустую строку "".

Примеры

julia> basename("/home/myuser/example.jl")
"example.jl"

julia> basename("/home/myuser/")
""

См. также описание dirname.

# Base.Filesystem.isabspathFunction

isabspath(path::AbstractString) -> Bool

Определение того, является ли путь абсолютным (начинается с корневого каталога).

Примеры

julia> isabspath("/home")
true

julia> isabspath("home")
false

# Base.Filesystem.isdirpathFunction

isdirpath(path::AbstractString) -> Bool

Определение того, относится ли путь к каталогу (например, заканчивается разделителем пути).

Примеры

julia> isdirpath("/home")
false

julia> isdirpath("/home/")
true

# Base.Filesystem.joinpathFunction

joinpath(parts::AbstractString...) -> String
joinpath(parts::Vector{AbstractString}) -> String
joinpath(parts::Tuple{AbstractString}) -> String

Объединяет компоненты пути в полный путь. Если какой-либо аргумент является абсолютным путем или (в Windows) имеет спецификацию диска, которая не совпадает с диском, определенным для объединения предыдущих путей, предыдущие компоненты отбрасываются.

Обратите внимание, что в Windows для каждого диска существует текущий каталог, joinpath("c:", "foo"), который представляет путь относительно текущего каталога на диске c:, поэтому он имеет вид c:foo, а не c:\foo. Более того, joinpath рассматривает его как неабсолютный путь и игнорирует регистр буквы диска, поэтому joinpath("C:\A","c:b") = "C:\A\b".

Примеры

julia> joinpath("/home/myuser", "example.jl")
"/home/myuser/example.jl"
julia> joinpath(["/home/myuser", "example.jl"])
"/home/myuser/example.jl"

# Base.Filesystem.abspathFunction

abspath(path::AbstractString) -> String

Преобразует путь в абсолютный путь с добавлением при необходимости текущего каталога. Также нормализует путь как в normpath.

Пример

Если вы находитесь в каталоге JuliaExample, а данные, которые вы используете, находятся на два уровня выше относительно каталога JuliaExample, вы можете написать:

abspath("../../data")

Результатом будет путь вида "/home/JuliaUser/data/".

См. также описание функций joinpath, pwd и expanduser.

abspath(path::AbstractString, paths::AbstractString...) -> String

Преобразует набор путей в нормализованный путь с их объединением и добавлением при необходимости текущего каталога. Эквивалентно abspath(joinpath(path, paths...)).

# Base.Filesystem.normpathFunction

normpath(path::AbstractString) -> String

Нормализует путь с удалением записей "." и ".." и изменением "/" на канонический разделитель пути для системы.

Примеры

julia> normpath("/home/myuser/../example.jl")
"/home/example.jl"

julia> normpath("Documents/Julia") == joinpath("Documents", "Julia")
true
normpath(path::AbstractString, paths::AbstractString...) -> String

Преобразует набор путей в нормализованный путь с их объединением и удалением записей "." и "..". Эквивалентно normpath(joinpath(path, paths...)).

# Base.Filesystem.realpathFunction

realpath(path::AbstractString) -> String

Канонизирует путь с расширением символьных ссылок и удалением записей "." и "..". В файловых системах с сохранением регистра и не учитывающих регистр (обычно в Mac и Windows) возвращается регистр, сохраненный в файловой системе, для пути.

(Эта функция вызывает исключение, если path не существует в файловой системе.)

# Base.Filesystem.relpathFunction

relpath(path::AbstractString, startpath::AbstractString = ".") -> AbstractString

Возвращает относительный путь к файлу для path либо из текущего каталога, либо из необязательного начального каталога. Это вычисление пути: к файловой системе нет обращений для подтверждения существования или характера path или startpath.

В Windows регистр учитывается для всех частей пути, кроме букв дисков. Если path и startpath относятся к разным дискам, возвращается абсолютный путь path.

# Base.Filesystem.expanduserFunction

expanduser(path::AbstractString) -> AbstractString

В системах Unix заменяет символ тильды в начале пути домашним каталогом текущего пользователя.

См. также описание contractuser.

# Base.Filesystem.contractuserFunction

contractuser(path::AbstractString) -> AbstractString

Если в системах Unix путь начинается с homedir(), замените его символом тильды.

См. также описание expanduser.

# Base.Filesystem.samefileFunction

samefile(path_a::AbstractString, path_b::AbstractString)

Проверяет, ссылаются ли пути path_a и path_b на один и тот же существующий файл или каталог.

# Base.Filesystem.splitdirFunction

splitdir(path::AbstractString) -> (AbstractString, AbstractString)

Разделяет путь на кортеж из имени каталога и имени файла.

Примеры

julia> splitdir("/home/myuser")
("/home", "myuser")

# Base.Filesystem.splitdriveFunction

splitdrive(path::AbstractString) -> (AbstractString, AbstractString)

В Windows делит путь на часть с буквой диска и часть с путем. В системах Unix первым компонентом всегда является пустая строка.

# Base.Filesystem.splitextFunction

splitext(path::AbstractString) -> (AbstractString, AbstractString)

Если последний компонент пути содержит одну или несколько точек, путь делится на все, что находится перед последней точкой, и все, включая точку, и что находится после нее. В противном случае возвращается кортеж из неизмененного аргумента и пустой строки. splitext — это краткое название расширения разделения.

Примеры

julia> splitext("/home/myuser/example.jl")
("/home/myuser/example", ".jl")

julia> splitext("/home/myuser/example.tar.gz")
("/home/myuser/example.tar", ".gz")

julia> splitext("/home/my.user/example")
("/home/my.user/example", "")

# Base.Filesystem.splitpathFunction

splitpath(path::AbstractString) -> Vector{String}

Разделяет путь к файлу на все компоненты пути. Противоположно joinpath. Возвращает массив подстрок, по одной для каждого каталога или файла в пути, включая корневой каталог (при наличии).

Совместимость: Julia 1.1

Для этой функции требуется версия Julia не ниже 1.1.

Примеры

julia> splitpath("/home/myuser/example.jl")
4-element Vector{String}:
 "/"
 "home"
 "myuser"
 "example.jl"