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 の場合、各 name
に対して joinpath(dir, name)
を返し、返される文字列はフルパスになります。絶対パスを取得したい場合は、絶対ディレクトリパスと join
を true に設定して readdir
を呼び出してください。
デフォルトでは、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
で、現在のファイル作成マスクによって変更されます。この関数は、1つのディレクトリ以上を作成することはありません。ディレクトリがすでに存在する場合や、中間ディレクトリのいずれかが存在しない場合、この関数はエラーをスローします。すべての必要な中間ディレクトリを作成する関数については 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
とは異なり、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
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
が存在しファイルである場合、ディレクトリシンボリックリンクは作成されますが、シンボリックリンクの解決は失敗します。これは、ユーザーがディレクトリが作成される前にdir_target
をfalse
に設定してsymlink()
を呼び出してファイルシンボリックリンクを作成した場合と同様です。
さらに、Windowsではリンクを作成する方法が2つあります。シンボリックリンクとジャンクションポイントです。ジャンクションポイントはわずかに効率的ですが、相対パスをサポートしていないため、相対ディレクトリシンボリックリンクが要求される場合(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
がディレクトリの場合、そのディレクトリ内のすべての権限が再帰的に変更されます。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
ネイティブOSファイルディスクリプタをラップするプリミティブ型です。RawFD
は、基盤となるファイルに関する情報を発見するためにstat
のようなメソッドに渡すことができ、ストリームを開くためにも使用でき、RawFD
はストリームを支えるOSファイルを説明します。
Base.stat
— Functionstat(file)
ファイルに関する情報を含む構造体を返します。構造体のフィールドは次のとおりです:
名前 | 型 | 説明 |
---|---|---|
desc | Union{String, Base.OS_HANDLE} | パスまたはOSファイルディスクリプタ |
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
— FunctionBase.touch(::Pidfile.LockMonitor)
ロックの mtime
を更新して、まだ新鮮であることを示します。
mkpidlock
コンストラクタの refresh
キーワードも参照してください。
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.tempname
— Functiontempname(parent=tempdir(); cleanup=true) -> String
一時ファイルパスを生成します。この関数はパスのみを返し、ファイルは作成されません。パスはユニークである可能性が高いですが、tempname
への2つの同時呼び出しが同じファイル名を生成する非常に遠い可能性のため、保証はできません。名前は、tempname
への呼び出し時に既に存在するすべてのファイルとは異なることが保証されています。
引数なしで呼び出すと、一時名はシステムの一時ディレクトリにある一時名への絶対パスになります。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プロセスが終了する際にmktemp
によって作成された一時パスが削除されます。ただし、cleanup
が明示的にfalse
に設定されている場合は除きます。
Base.Filesystem.mktemp
— Methodmktemp(f::Function, parent=tempdir())
関数 f
を mktemp(parent)
の結果に適用し、完了後に一時ファイルを削除します。
関連情報: mktempdir
.
Base.Filesystem.mktempdir
— Methodmktempdir(parent=tempdir(); prefix="jl_", cleanup=true) -> path
指定されたprefix
とランダムなサフィックスから構成された名前の一時ディレクトリをparent
ディレクトリ内に作成し、そのパスを返します。さらに、一部のプラットフォームでは、prefix
内の末尾の'X'
文字がランダムな文字に置き換えられる場合があります。parent
が存在しない場合は、エラーをスローします。cleanup
オプションは、プロセスが終了したときに一時ディレクトリが自動的に削除されるかどうかを制御します。
prefix
キーワード引数はJulia 1.2で追加されました。
cleanup
キーワード引数はJulia 1.3で追加されました。関連して、1.3以降、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
— Functionispath(path) -> Bool
path
に有効なファイルシステムエンティティが存在する場合はtrue
を返し、そうでない場合はfalse
を返します。これはisfile
、isdir
などの一般化です。
Base.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
ディレクトリから2階層上にある場合、次のように書くことができます:
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)
パスの最後のコンポーネントに1つ以上のドットが含まれている場合、パスを最後のドットの前のすべての部分とドットを含むそれ以降のすべての部分に分割します。そうでない場合は、引数を変更せずにタプルと空の文字列を返します。"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
の逆です。パス内の各ディレクトリまたはファイルに対して1つのサブストリングを含む配列を返し、ルートディレクトリが存在する場合はそれも含まれます。
この関数は少なくともJulia 1.1を必要とします。
例
julia> splitpath("/home/myuser/example.jl")
4-element Vector{String}:
"/"
"home"
"myuser"
"example.jl"