ファイルシステム
Base.Filesystem.pwd
── 関数
pwd() -> AbstractString
カレントワーキングディレクトリを取得します。
例
julia> pwd()
"/home/JuliaUser"
julia> cd("/home/JuliaUser/Projects/julia")
julia> pwd()
"/home/JuliaUser/Projects/julia"
Base.Filesystem.cd
── メソッド
cd(dir::AbstractString=homedir())
カレントワーキングディレクトリを設定します。
例
julia> cd("/home/JuliaUser/Projects/julia")
julia> pwd()
"/home/JuliaUser/Projects/julia"
julia> cd()
julia> pwd()
"/home/JuliaUser"
Base.Filesystem.cd
── メソッド
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.readdir
── 関数
readdir(dir::AbstractString=pwd();
join::Bool = false,
sort::Bool = true) -> Vector{String}
dir
に含まれる名前を返します。dir
が与えられなければカレントワーキングディレクトリが使われます。join
が false
なら、readdir
はディレクトリ内の名前をそのまま返します。join
が true
なら、各 name
に対して joinpath(dir, name)
で計算されるフルパスが返り値の配列の要素となります。名前の絶対パスが必要なら、readdir
に絶対パスを渡した上で join
を true
にしてください。
readdir
はデフォルトで名前をソートして返します。もしソートせずにシステムが並べる順序で名前が並んだ配列が必要な場合には、readir(dir, sort=false)
とすればソートを無効化できます。
キーワード引数 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
── 関数
walkdir(dir; topdown=true, follow_symlinks=false, onerror=throw)
ディレクトリ tree
を頂点とするディレクトリツリーを走査する反復子を返します。walkdir
が返す反復子は (rootpath, dirs, files)
というタプルを生成します。ディレクトリツリーの走査はトップダウン (topdown = true
) またはボトムアップ (topdown = false
) の順序で行われます。walkdir
が SystemError
に遭遇すると、デフォルトではエラーが送出されます。キーワード引数 onerror
を使えば独自のエラー処理関数を設定できます。onerror
が呼ばれるときの引数は SystemError
です。
例
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
── 関数
mkdir(path::AbstractString; mode::Unsigned = 0o777)
path
という名前と mode
という権限を持った新しいディレクトリを作成します。mode
のデフォルト値は 0o777
を現在のファイル作成マスクで処理した値です。この関数が二つ以上のディレクトリを作成することは絶対にありません。指定されたディレクトリが既に存在するとき、および中間のディレクトリが存在しないとき、mkdir
はエラーを送出します。中間ディレクトリを全て作成する処理は mkpath
関数を使えば行えます。mkdir
は path
を返します。
例
julia> mkdir("testingdir")
"testingdir"
julia> cd("testingdir")
julia> pwd()
"/home/JuliaUser/testingdir"
Base.Filesystem.mkpath
── 関数
mkpath(path::AbstractString; mode::Unsigned = 0o777)
path
に含まれる全てのディレクトリを mode
という権限で作成します。mode
のデフォルト値は 0o777
を現在のファイル作成マスクで処理した値です。path
を返します。
例
julia> mkdir("testingdir")
"testingdir"
julia> cd("testingdir")
julia> pwd()
"/home/JuliaUser/testingdir"
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"
Base.Filesystem.symlink
── 関数
symlink(target::AbstractString, link::AbstractString)
link
という名前の target
へのシンボリックリンクを作成します。
ソフトシンボリックリンクをサポートしないオペレーティングシステム (Windows XP など) では、この関数はエラーを送出します。
Base.Filesystem.readlink
── 関数
Base.Filesystem.chmod
── 関数
chmod(path::AbstractString, mode::Integer; recursive::Bool=false)
path
の権限モードを mode
に変更します。整数の mode
(0o777
など) だけが現在サポートされます。recursive=true
でパスがディレクトリだと、ディレクトリ内に存在するもの全ての権限が再帰的に変更されます。path
を返します。
Base.Filesystem.chown
── 関数
chown(path::AbstractString, owner::Integer, group::Integer=-1)
path
の所有者 ID を owner
に、所有グループ ID を group
に変更します。owner
あるいは group
に -1
を指定すると、対応する ID は変更されません。owner
と group
が現在サポートするのは整数だけです。path
を返します。
Base.Libc.RawFD
── 型
Base.stat
── 関数
stat(file)
ファイルの情報をフィールドに持つ構造体を返します。この関数が返す構造体のフィールドは次の通りです:
名前 | 説明 |
---|---|
size |
ファイルのサイズ (単位はバイト) |
device |
ファイルを含むデバイスの ID |
inode |
ファイルの inode 番号 |
mode |
ファイルの保護モード |
nlink |
ファイルを指すハードリンクの個数 |
uid |
ファイル所有者のユーザー ID |
gid |
ファイル所有者のグループ ID |
rdev |
このファイルがデバイスを指すなら、そのデバイスの ID |
blksize |
ファイルシステムが推奨するファイルのブロックサイズ |
blocks |
アロケートされているファイルのブロック数 |
mtime |
ファイルが最後に変更された時刻の Unix タイムスタンプ |
ctime |
ファイルが作成された時刻の Unix タイムスタンプ |
Base.Filesystem.lstat
── 関数
Base.Filesystem.ctime
── 関数
Base.Filesystem.mtime
── 関数
Base.Filesystem.filemode
── 関数
Base.Filesystem.filesize
── 関数
Base.Filesystem.uperm
── 関数
Base.Filesystem.gperm
── 関数
Base.Filesystem.operm
── 関数
Base.Filesystem.cp
── 関数
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
を返します。
Base.download
── 関数
download(url::AbstractString, [localfile::AbstractString])
url
からファイルをダウンロードし、localfile
に保存します。localfile
が与えられなければ、download
はダウンロードしたファイルをランダムな名前のファイルとして一時ディレクトリに保存します。この関数はファイルのダウンロードで curl
, wget
, fetch
のような外部ツールを使っており、利便性のために提供されます。プロダクションでの利用や細かなオプションが必要な場合には、そういった機能を提供する個別のパッケージを使ってください。
ダウンロードされたファイル名を返します。
Base.Filesystem.mv
── 関数
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.rm
── 関数
rm(path::AbstractString; force::Bool=false, recursive::Bool=false)
path
にあるファイル/リンク/空のディレクトリを削除します。force=true
だと、パスが存在しなくてもエラーが発生しません。recursive=true
で path
がディレクトリだと、中に含まれる全てのものが再帰的に削除されます。
例
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: no such file or directory (ENOENT)
Stacktrace:
[...]
Base.Filesystem.touch
── 関数
touch(path::AbstractString)
ファイルの最終更新日時を表すタイムスタンプを現在時刻に更新します。
path
というファイルが存在しなければ、新しく作成されます。
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
── 関数
tempname(parent=tempdir(); cleanup=true) -> String
一時ファイルのパスを生成します。この関数はパスを返すだけで、ファイルは作成しません。パスはおそらくユニークですが、同時に行われた tempname
の呼び出しが同じファイル名を生成しないという保証はありません。生成されるファイル名が tempname
を呼んだ時点で存在する任意のファイル名と異なることは保証されます。
引数を与えずに呼ぶと、tempdir()
が返すシステムの一時ディレクトリ内の一時ファイル名を示す絶対パスが返ります。引数 parent
にディレクトリを指定すると、そのディレクトリに含まれる一時ファイルのパスが生成されます。
キーワード引数 cleanup
はプロセス終了時に一時パスを自動的に削除するかどうかを制御します。tampname
関数は返り値の名前をしたファイルやディレクトリを作成しないので、その後ファイルまたはディレクトリを作成しない限り掃除は必要ありません。clean=true
にするとプロセスの終了時にこのパスが削除されます。
引数 parent
と cleanup
は Julia 1.4 で追加されました。Julia 1.4 より前のバージョンではプロセスが終了しても tempname
は掃除されません。
他のプロセスが同じファイル名を取得し、あなたがファイルを作成できるようになる前にファイルを作成すると、セキュリティホールにつながる可能性があります。この点が心配ならファイルを JL_O_EXCL
で開いてください。また mktemp()
の利用も推奨されます。
Base.Filesystem.tempdir
── 関数
tempdir()
一時ディレクトリのパスを取得します。Windows の tempdir()
は環境変数 TMP
, TEMP
, USERPROFILE
をこの順に調べ、最初に見つかった値を返します。他の全てのオペレーティングシステムの tempdir()
は環境変数 TMPDIR
, TMP
, TEMP
, TEMPDIR
をこの順に調べ、最初に見つかった値を返します。これらの環境変数がどれも定義されていなければ "/tmp"
が使われます。
Base.Filesystem.mktemp
── メソッド
mktemp(parent=tempdir(); cleanup=true) -> (path, io)
(path, io)
を返します。path
は parent
内に含まれる新しい一時ファイルのパスで、io
は path
に対して開かれたファイルオブジェクトです。キーワード引数 cleanup
はプロセス終了時に一時ファイルを自動的に削除するかどうかを制御します。
Base.Filesystem.mktemp
── メソッド
Base.Filesystem.mktempdir
── メソッド
mktempdir(parent=tempdir(); prefix="jl_", cleanup=true) -> path
ディレクトリ parent
に一時ディレクトリを作成します。一時ディレクトリのパスは与えられた接頭辞 prefix
にランダムな接尾辞を付けたものです。作成されたディレクトリのパスを返します。parent
が存在しないときはエラーを送出します。キーワード引数 cleanup
はプロセス終了時に一時ファイルを自動的に削除するかどうかを制御します。
Base.Filesystem.mktempdir
── メソッド
mktempdir(f::Function, parent=tempdir(); prefix="jl_")
mktempdir(parent; prefix)
の返り値に関数 f
を適用し、完了したら一時ファイルを削除します。
Base.Filesystem.isblockdev
── 関数
Base.Filesystem.ischardev
── 関数
Base.Filesystem.isdir
── 関数
Base.Filesystem.isfifo
── 関数
Base.Filesystem.isfile
── 関数
Base.Filesystem.islink
── 関数
Base.Filesystem.ismount
── 関数
Base.Filesystem.ispath
── 関数
Base.Filesystem.issetgid
── 関数
Base.Filesystem.issetuid
── 関数
Base.Filesystem.issocket
── 関数
Base.Filesystem.issticky
── 関数
Base.Filesystem.homedir
── 関数
Base.Filesystem.dirname
── 関数
Base.Filesystem.basename
── 関数
Base.@__FILE__
── マクロ
@__FILE__ -> AbstractString
マクロの呼び出したコードがあるファイルのパスを表す文字列に展開されます。julia -e <expr>
として評価されている場合は空文字列が返り、パーサーからソース情報を取得できない場合は nothing
が返ります。
Base.@__DIR__
── マクロ
@__DIR__ -> AbstractString
マクロの呼び出したコードがあるファイルを含むディレクトリの絶対パスを表す文字列に展開されます。julia -e <expr>
として評価されている場合はカレントワーキングディレクトリが返ります。
Base.@__LINE__
── マクロ
Base.Filesystem.isabspath
── 関数
isabspath(path::AbstractString) -> Bool
パスが絶対 (ルートディレクトリから始まる) かどうかを判定します。
例
julia> isabspath("/home")
true
julia> isabspath("home")
false
Base.Filesystem.isdirpath
── 関数
isdirpath(path::AbstractString) -> Bool
パスがディレクトリを指すかどうか (パス分離文字で終わるか、など) を判定します。
例
julia> isdirpath("/home")
false
julia> isdirpath("/home/")
true
Base.Filesystem.joinpath
── 関数
joinpath(parts::AbstractString...) -> String
パス要素を連結して完全なパスを作成します。引数が絶対パスのとき、および (Windows において) 引数の指定するドライブがそれまでのドライブと一致しないときは、それ以前の引数が無視されます。
Windows では各ドライブにカレントディレクトリが存在するので、joinpath("c:", "foo")
はドライブ "c:"
におけるカレントディレクトリからの相対パス "c:foo"
を表します ("c:\foo"
ではありません)。さらに joinpath
は "c:foo"
のようなパスを絶対でないものとして扱い、ドライブ文字では大文字と小文字を区別しません。例えば joinpath("C:\A","c:b") = "C:\A\b"
です。
例
julia> joinpath("/home/myuser", "example.jl")
"/home/myuser/example.jl"
Base.Filesystem.abspath
── 関数
abspath(path::AbstractString) -> String
必要ならカレントディレクトリを付け足すことで、パスを絶対パスに変換します。さらに normpath
と同じようにパスを正規化します。
abspath(path::AbstractString, paths::AbstractString...) -> String
複数のパスを連結し、必要ならカレントディレクトリを付け足すことで絶対パスに変換します。abspath(joinpath(path, paths...))
と等価です。
Base.Filesystem.normpath
── 関数
normpath(path::AbstractString) -> String
"."
と ".."
を削除してパスを正規化します。
例
julia> normpath("/home/myuser/../example.jl")
"/home/example.jl"
normpath(path::AbstractString, paths::AbstractString...) -> String
複数のパスを連結し、"."
と ".."
を持たないパスに正規化します。normpath(joinpath(path, paths...))
と等価です。
Base.Filesystem.realpath
── 関数
realpath(path::AbstractString) -> String
シンボリックリンクを展開し、"."
と ".."
を削除することでパスを正準化します。Mac や Windows のような大文字と小文字を区別せず統一もしないファイルシステムを持つ OS では、ファイルシステムに保存された文字を使ったパスが返ります。
この関数は path
がファイルシステムに存在しないとき例外を送出します。
Base.Filesystem.relpath
── 関数
relpath(path::AbstractString, startpath::AbstractString = ".") -> AbstractString
path
への相対パスを返します。相対パスの起点は startpath
であり、startpath
を省略するとカレントディレクトリが使われます。この関数はパスの計算を行うだけです: path
や startpath
の存在あるいは性質を確認するためにファイルシステムにアクセスすることはありません。
Base.Filesystem.expanduser
── 関数
expanduser(path::AbstractString) -> AbstractString
OS が Unix 系なら、パスの最初にあるチルダ文字を現在のユーザーのホームディレクトリに置き換えます。
Base.Filesystem.splitdir
── 関数
splitdir(path::AbstractString) -> (AbstractString, AbstractString)
パスをディレクトリ名とファイル名からなるタプルに分割します。
例
julia> splitdir("/home/myuser")
("/home", "myuser")
Base.Filesystem.splitdrive
── 関数
splitdrive(path::AbstractString) -> (AbstractString, AbstractString)
OS が Windows なら、パスをドライブ文字とパスに分割します。Unix 系では返り値の第一要素は必ず空文字列です。
Base.Filesystem.splitext
── 関数
splitext(path::AbstractString) -> (AbstractString, AbstractString)
path
の最後の要素がドットを含むなら、それより前とそれ以降に path
を分割します。パスがドットを含まないなら、path
と空文字列からなるタプルを返します。
例
julia> splitext("/home/myuser/example.jl")
("/home/myuser/example", ".jl")
julia> splitext("/home/myuser/example")
("/home/myuser/example", "")
Base.Filesystem.splitpath
── 関数
splitpath(path::AbstractString) -> Vector{String}
ファイルパスをパスの要素に分割します。これは joinpath
の逆と言えます。部分文字列の配列を返し、配列の各要素がパス中のディレクトリまたはファイルに対応します。path
にルートディレクトリが存在するなら、それも返り値に含まれます。
この関数は Julia 1.1 以降でサポートされます。
例
julia> splitpath("/home/myuser/example.jl")
4-element Array{String,1}:
"/"
"home"
"myuser"
"example.jl"