Filesystem
Base.read
— Methodread(filename::AbstractString)
将文件的全部内容读取为 Vector{UInt8}
。
read(filename::AbstractString, String)
将文件的全部内容读取为字符串。
read(filename::AbstractString, args...)
打开一个文件并读取其内容。args
被传递给 read
:这相当于 open(io->read(io, args...), filename)
。
Base.write
— Methodwrite(filename::AbstractString, content)
将 content
的规范二进制表示写入文件,如果文件尚不存在,则会创建该文件;如果文件已存在,则会覆盖该文件。
返回写入文件的字节数。
Base.Filesystem.pwd
— Functionpwd() -> String
获取当前工作目录。
示例
julia> pwd()
"/home/JuliaUser"
julia> cd("/home/JuliaUser/Projects/julia")
julia> pwd()
"/home/JuliaUser/Projects/julia"
Base.Filesystem.cd
— Methodcd(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.cd
— Methodcd(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.readdir
— Functionreaddir(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
。
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.walkdir
— Functionwalkdir(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.mkdir
— Functionmkdir(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.mkpath
— Functionmkpath(path::AbstractString; mode::Unsigned = 0o777)
根据需要创建path
中的所有中间目录。目录的权限为mode
,默认为0o777
,并受到当前文件创建掩码的影响。与mkdir
不同,如果path
(或其部分)已经存在,mkpath
不会报错。然而,如果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
Base.Filesystem.hardlink
— Functionhardlink(src::AbstractString, dst::AbstractString)
创建一个指向现有源文件 src
的硬链接,名称为 dst
。目标 dst
不能存在。
另见:symlink
。
此方法是在 Julia 1.8 中添加的。
Base.Filesystem.symlink
— Functionsymlink(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)下,此函数会引发错误。
dir_target
关键字参数是在 Julia 1.6 中添加的。在此之前,指向不存在路径的符号链接在 Windows 上总是文件符号链接,并且不支持指向目录的相对符号链接。
Base.Filesystem.readlink
— Functionreadlink(path::AbstractString) -> String
返回符号链接 path
指向的目标位置。
Base.Filesystem.chmod
— Functionchmod(path::AbstractString, mode::Integer; recursive::Bool=false)
将 path
的权限模式更改为 mode
。目前仅支持整数 mode
(例如 0o777
)。如果 recursive=true
且路径是一个目录,则该目录中的所有权限将被递归更改。返回 path
。
在 Julia 1.6 之前,这在 Windows 上无法正确操作文件系统 ACL,因此它只会在文件上设置只读位。现在它能够操作 ACL。
Base.Filesystem.chown
— Functionchown(path::AbstractString, owner::Integer, group::Integer=-1)
将 path
的所有者和/或组更改为 owner
和/或 group
。如果输入的 owner
或 group
的值为 -1
,则相应的 ID 将不会更改。目前仅支持整数类型的 owner
和 group
。返回 path
。
Base.Libc.RawFD
— TypeRawFD
原始类型,封装了本地操作系统文件描述符。RawFD
可以传递给像stat
这样的函数,以发现有关底层文件的信息,也可以用于打开流,RawFD
描述了支持该流的操作系统文件。
Base.stat
— Functionstat(file)
返回一个结构体,其字段包含有关文件的信息。结构体的字段如下:
名称 | 类型 | 描述 |
---|---|---|
desc | Union{String, Base.OS_HANDLE} | 文件的路径或操作系统文件描述符 |
size | Int64 | 文件的大小(以字节为单位) |
device | UInt | 包含该文件的设备的ID |
inode | UInt | 文件的inode号 |
mode | UInt | 文件的保护模式 |
nlink | Int | 指向该文件的硬链接数量 |
uid | UInt | 文件所有者的用户ID |
gid | UInt | 文件所有者的组ID |
rdev | UInt | 如果该文件指向一个设备,则指向该设备的ID |
blksize | Int64 | 文件系统为该文件首选的块大小 |
blocks | Int64 | 分配的512字节块的数量 |
mtime | Float64 | 文件最后修改的Unix时间戳 |
ctime | Float64 | 文件元数据更改的Unix时间戳 |
Base.Filesystem.diskstat
— Functiondiskstat(path=pwd())
返回关于包含由 path
指向的文件或目录的磁盘的字节统计信息。如果未传递任何参数,则返回包含当前工作目录的磁盘的统计信息。
此方法是在 Julia 1.8 中添加的。
Base.Filesystem.lstat
— Functionlstat(file)
像 stat
一样,但对于符号链接获取的是链接本身的信息,而不是它所指向的文件的信息。此函数必须在文件路径上调用,而不是文件对象或文件描述符上。
Base.Filesystem.ctime
— Functionctime(file)
等价于 stat(file).ctime
。
Base.Filesystem.mtime
— Functionmtime(file)
等同于 stat(file).mtime
。
Base.Filesystem.filemode
— Functionfilemode(file)
等同于 stat(file).mode
。
Base.filesize
— Functionfilesize(path...)
等同于 stat(file).size
。
Base.Filesystem.uperm
— FunctionBase.Filesystem.gperm
— Functiongperm(file)
类似于 uperm
,但获取拥有该文件的组的权限。
Base.Filesystem.operm
— Functionoperm(file)
类似于 uperm
,但获取既不是文件所有者也不是拥有该文件的组成员的人的权限。
Base.Filesystem.cp
— Functioncp(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
是目录还是文件执行不同的操作。当 dst
是一个目录时使用 force=true
将导致 dst
目录中所有内容的丢失,并且 dst
将变成一个包含 src
内容的文件。
Base.download
— Functiondownload(url::AbstractString, [path::AbstractString = tempname()]) -> path
从给定的 url 下载文件,保存到位置 path
,如果未指定,则保存到临时路径。返回下载文件的路径。
从 Julia 1.6 开始,此函数已被弃用,仅是 Downloads.download
的一个薄包装。在新代码中,您应该直接使用该函数,而不是调用这个。
Base.Filesystem.mv
— Functionmv(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.rm
— Functionrm(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.touch
— Functiontouch(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.tempname
— Functiontempname(parent=tempdir(); cleanup=true) -> String
生成一个临时文件路径。此函数仅返回一个路径;不会创建文件。该路径可能是唯一的,但由于两个同时调用 tempname
生成相同文件名的可能性非常小,因此无法保证。该名称保证与调用 tempname
时已存在的所有文件不同。
当不带参数调用时,临时名称将是系统临时目录中临时名称的绝对路径,如 tempdir()
所示。如果提供了 parent
目录参数,则临时路径将位于该目录中。
cleanup
选项控制进程在退出时是否尝试自动删除返回的路径。请注意,tempname
函数不会在返回的位置创建任何文件或目录,因此除非您在该位置创建文件或目录,否则没有任何内容需要清理。如果您这样做并且 cleanup
为 true
,则在进程终止时将被删除。
parent
和 cleanup
参数是在 1.4 中添加的。在 Julia 1.4 之前,tempname
的路径在进程终止时永远不会被清理。
如果另一个进程获得相同的文件名并在您能够之前创建该文件,这可能会导致安全漏洞。如果这是一个问题,请使用 JL_O_EXCL
打开文件。也建议使用 mktemp()
。
Base.Filesystem.tempdir
— Functiontempdir()
获取临时目录的路径。在 Windows 上,tempdir()
使用在有序列表 TMP
、TEMP
、USERPROFILE
中找到的第一个环境变量。在所有其他操作系统上,tempdir()
使用在有序列表 TMPDIR
、TMP
、TEMP
和 TEMPDIR
中找到的第一个环境变量。如果没有找到这些,使用路径 "/tmp"
。
Base.Filesystem.mktemp
— Methodmktemp(parent=tempdir(); cleanup=true) -> (path, io)
返回 (path, io)
,其中 path
是 parent
中新临时文件的路径,io
是该路径的打开文件对象。cleanup
选项控制临时文件在进程退出时是否自动删除。
cleanup
关键字参数是在 Julia 1.3 中添加的。相关地,从 1.3 开始,Julia 会在 Julia 进程退出时删除由 mktemp
创建的临时路径,除非 cleanup
被显式设置为 false
。
Base.Filesystem.mktemp
— MethodBase.Filesystem.mktempdir
— Methodmktempdir(parent=tempdir(); prefix="jl_", cleanup=true) -> path
在给定的 parent
目录中创建一个临时目录,其名称由给定的 prefix
和一个随机后缀构成,并返回其路径。此外,在某些平台上,prefix
中的任何尾随 'X'
字符可能会被随机字符替换。如果 parent
不存在,则抛出错误。cleanup
选项控制在进程退出时临时目录是否会被自动删除。
prefix
关键字参数是在 Julia 1.2 中添加的。
cleanup
关键字参数是在 Julia 1.3 中添加的。相关地,从 1.3 开始,Julia 会在 Julia 进程退出时删除由 mktempdir
创建的临时路径,除非 cleanup
被显式设置为 false
。
Base.Filesystem.mktempdir
— Methodmktempdir(f::Function, parent=tempdir(); prefix="jl_")
将函数 f
应用到 mktempdir(parent; prefix)
的结果,并在完成后删除临时目录及其所有内容。
prefix
关键字参数是在 Julia 1.2 中添加的。
Base.Filesystem.isblockdev
— Functionisblockdev(path) -> Bool
如果 path
是一个块设备,则返回 true
,否则返回 false
。
Base.Filesystem.ischardev
— Functionischardev(path) -> Bool
如果 path
是一个字符设备,则返回 true
,否则返回 false
。
Base.Filesystem.isdir
— Functionisdir(path) -> Bool
如果 path
是一个目录,则返回 true
,否则返回 false
。
示例
julia> isdir(homedir())
true
julia> isdir("not/a/directory")
false
Base.Filesystem.isfifo
— Functionisfifo(path) -> Bool
如果 path
是一个 FIFO,则返回 true
,否则返回 false
。
Base.Filesystem.isfile
— Functionisfile(path) -> Bool
如果 path
是一个常规文件,则返回 true
,否则返回 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
Base.Filesystem.islink
— Functionislink(path) -> Bool
如果 path
是符号链接,则返回 true
,否则返回 false
。
Base.Filesystem.ismount
— Functionismount(path) -> Bool
如果 path
是一个挂载点,则返回 true
,否则返回 false
。
Base.Filesystem.ispath
— FunctionBase.Filesystem.issetgid
— Functionissetgid(path) -> Bool
如果 path
设置了 setgid 标志,则返回 true
,否则返回 false
。
Base.Filesystem.issetuid
— Functionissetuid(path) -> Bool
如果 path
设置了 setuid 标志,则返回 true
,否则返回 false
。
Base.Filesystem.issocket
— Functionissocket(path) -> Bool
如果 path
是一个套接字,则返回 true
,否则返回 false
。
Base.Filesystem.issticky
— Functionissticky(path) -> Bool
如果 path
设置了粘滞位,则返回 true
,否则返回 false
。
Base.Filesystem.homedir
— Functionhomedir() -> String
返回当前用户的主目录。
homedir
通过 libuv
的 uv_os_homedir
确定主目录。有关详细信息(例如如何通过环境变量指定主目录),请参见 uv_os_homedir
文档。
另见 Sys.username
.
Base.Filesystem.dirname
— Functiondirname(path::AbstractString) -> String
获取路径的目录部分。路径中的尾随字符('/' 或 '\')被视为路径的一部分。
示例
julia> dirname("/home/myuser")
"/home"
julia> dirname("/home/myuser/")
"/home/myuser"
另见 basename
.
Base.Filesystem.basename
— Functionbasename(path::AbstractString) -> String
获取路径的文件名部分。
此函数与 Unix 的 basename
程序略有不同,后缀斜杠会被忽略,即 $ basename /foo/bar/
返回 bar
,而 Julia 中的 basename
返回空字符串 ""
。
示例
julia> basename("/home/myuser/example.jl")
"example.jl"
julia> basename("/home/myuser/")
""
另见 dirname
.
Base.Filesystem.isabspath
— Functionisabspath(path::AbstractString) -> Bool
确定路径是否为绝对路径(以根目录开始)。
示例
julia> isabspath("/home")
true
julia> isabspath("home")
false
Base.Filesystem.isdirpath
— Functionisdirpath(path::AbstractString) -> Bool
确定路径是否指向一个目录(例如,是否以路径分隔符结尾)。
示例
julia> isdirpath("/home")
false
julia> isdirpath("/home/")
true
Base.Filesystem.joinpath
— Functionjoinpath(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.abspath
— Functionabspath(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.normpath
— Functionnormpath(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.realpath
— Functionrealpath(path::AbstractString) -> String
通过展开符号链接并删除“.”和“..”条目来规范化路径。在不区分大小写且保留大小写的文件系统(通常是 Mac 和 Windows)上,将返回路径的存储大小写。
(如果 path
在文件系统中不存在,此函数会抛出异常。)
Base.Filesystem.relpath
— Functionrelpath(path::AbstractString, startpath::AbstractString = ".") -> String
返回相对于当前目录或可选起始目录的 path
的相对文件路径。这是一个路径计算:不访问文件系统以确认 path
或 startpath
的存在或性质。
在 Windows 上,路径的每个部分都应用大小写敏感性,除了驱动器字母。如果 path
和 startpath
指向不同的驱动器,则返回 path
的绝对路径。
Base.Filesystem.expanduser
— Functionexpanduser(path::AbstractString) -> AbstractString
在 Unix 系统上,将路径开头的波浪号字符替换为当前用户的主目录。
另见: contractuser
.
Base.Filesystem.contractuser
— Functioncontractuser(path::AbstractString) -> AbstractString
在 Unix 系统中,如果路径以 homedir()
开头,则用波浪号字符替换它。
另请参见: expanduser
.
Base.Filesystem.samefile
— Functionsamefile(path_a::AbstractString, path_b::AbstractString)
检查路径 path_a
和 path_b
是否指向同一个现有的文件或目录。
Base.Filesystem.splitdir
— Functionsplitdir(path::AbstractString) -> (AbstractString, AbstractString)
将路径拆分为目录名和文件名的元组。
示例
julia> splitdir("/home/myuser")
("/home", "myuser")
Base.Filesystem.splitdrive
— Functionsplitdrive(path::AbstractString) -> (AbstractString, AbstractString)
在Windows上,将路径分割为驱动器字母部分和路径部分。在Unix系统中,第一个组件始终为空字符串。
Base.Filesystem.splitext
— Functionsplitext(path::AbstractString) -> (String, String)
如果路径的最后一个组件包含一个或多个点,则将路径拆分为最后一个点之前的所有内容和包括点及其后面的所有内容。否则,返回未修改的参数元组和空字符串。“splitext”是“split extension”的缩写。
示例
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.splitpath
— Functionsplitpath(path::AbstractString) -> Vector{String}
将文件路径拆分为所有路径组件。这是 joinpath
的反操作。返回一个子字符串数组,每个目录或文件在路径中都有一个,包括根目录(如果存在)。
此函数至少需要 Julia 1.1。
示例
julia> splitpath("/home/myuser/example.jl")
4-element Vector{String}:
"/"
"home"
"myuser"
"example.jl"