ファイルシステム

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 が与えられなければカレントワーキングディレクトリが使われます。joinfalse なら、readdir はディレクトリ内の名前をそのまま返します。jointrue なら、各 name に対して joinpath(dir, name) で計算されるフルパスが返り値の配列の要素となります。名前の絶対パスが必要なら、readdir に絶対パスを渡した上で jointrue にしてください。

readdir はデフォルトで名前をソートして返します。もしソートせずにシステムが並べる順序で名前が並んだ配列が必要な場合には、readir(dir, sort=false) とすればソートを無効化できます。

Julia 1.4

キーワード引数 joinsort は 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) の順序で行われます。walkdirSystemError に遭遇すると、デフォルトではエラーが送出されます。キーワード引数 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 関数を使えば行えます。mkdirpath を返します。

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"
symlink(target::AbstractString, link::AbstractString)

link という名前の target へのシンボリックリンクを作成します。

情報

ソフトシンボリックリンクをサポートしないオペレーティングシステム (Windows XP など) では、この関数はエラーを送出します。

readlink(path::AbstractString) -> AbstractString

シンボリックリンク path が指す場所を返します。

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 は変更されません。ownergroup が現在サポートするのは整数だけです。path を返します。

Base.Libc.RawFD ──
RawFD

OS が利用するネイティブなファイル記述子をラップするプリミティブ型です。statRawFD 型の値を渡せば参照されるファイルの情報を取得でき、ストリームを開くときは RawFD 型の値がストリームで使われる OS ファイルを表します。

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 ── 関数
lstat(file)

基本的に stat と同様ですが、シンボリックリンクに対してはそれが指すファイルではなくリンク自身の情報を取得します。この関数はファイルオブジェクトやファイル記述子ではなくファイルパスに対して呼ばれるべきです。

Base.Filesystem.ctime ── 関数
ctime(file)

stat(file).ctime と等価です。

Base.Filesystem.mtime ── 関数
mtime(file)

stat(file).mtime と等価です。

Base.Filesystem.filemode ── 関数
filemode(file)

stat(file).mode と等価です。

Base.Filesystem.filesize ── 関数
filesize(path...)

stat(file).size と等価です。

Base.Filesystem.uperm ── 関数
uperm(file)

ファイルの所有者が持つ権限を取得します。返り値はビットフィールドであり、意味は次の通りです:

説明
01 実行権限
02 書き込み権限
04 読み込み権限

渡すことができる引数は stat と同様です。

Base.Filesystem.gperm ── 関数
gperm(file)

ファイルの所有者グループが持つ権限を取得します。返り値の意味は uperm と同様です。

Base.Filesystem.operm ── 関数
operm(file)

ファイルの所有者でもなく所有グループにも属さないユーザーが持つ権限を取得します。返り値の意味は uperm と同様です。

Base.Filesystem.cp ── 関数
cp(src::AbstractString,
   dst::AbstractString; force::Bool=false,
   follow_symlinks::Bool=false)

ファイル/リンク/ディレクトリを src から dst にコピーします。force=true なら、dst が存在していたとしても上書きします。

follow_symlinks=falsesrc がシンボリックリンクなら、dst はシンボリックリンクとして作成されます。follow_symlinks=truesrc がシンボリックリンクなら、dstsrc が指すファイルまたはディレクトリのコピーとなります。全ての場合で 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=truepath がディレクトリだと、中に含まれる全てのものが再帰的に削除されます。

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

この例ではファイルの mtimetouch によって更新されているのが分かります。

Base.Filesystem.tempname ── 関数
tempname(parent=tempdir(); cleanup=true) -> String

一時ファイルのパスを生成します。この関数はパスを返すだけで、ファイルは作成しません。パスはおそらくユニークですが、同時に行われた tempname の呼び出しが同じファイル名を生成しないという保証はありません。生成されるファイル名が tempname を呼んだ時点で存在する任意のファイル名と異なることは保証されます。

引数を与えずに呼ぶと、tempdir() が返すシステムの一時ディレクトリ内の一時ファイル名を示す絶対パスが返ります。引数 parent にディレクトリを指定すると、そのディレクトリに含まれる一時ファイルのパスが生成されます。

キーワード引数 cleanup はプロセス終了時に一時パスを自動的に削除するかどうかを制御します。tampname 関数は返り値の名前をしたファイルやディレクトリを作成しないので、その後ファイルまたはディレクトリを作成しない限り掃除は必要ありません。clean=true にするとプロセスの終了時にこのパスが削除されます。

Julia 1.4

引数 parentcleanup は 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) を返します。pathparent 内に含まれる新しい一時ファイルのパスで、iopath に対して開かれたファイルオブジェクトです。キーワード引数 cleanup はプロセス終了時に一時ファイルを自動的に削除するかどうかを制御します。

Base.Filesystem.mktemp ── メソッド
mktemp(f::Function, parent=tempdir())

mktemp(parent) の返り値に関数 f を適用し、完了したら一時ファイルを削除します。

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 を適用し、完了したら一時ファイルを削除します。

isblockdev(path) -> Bool

path がブロックデバイスなら true を、そうでないなら false を返します。

ischardev(path) -> Bool

path がキャラクタデバイスなら true を、そうでないなら false を返します。

Base.Filesystem.isdir ── 関数
isdir(path) -> Bool

path がディレクトリなら true を、そうでないなら false を返します。

julia> isdir(homedir())
true

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

isfile, ispath も参照してください。

Base.Filesystem.isfifo ── 関数
isfifo(path) -> Bool

path が FIFO なら true を、そうでないなら false を返します。

Base.Filesystem.isfile ── 関数
isfile(path) -> Bool

path が通常ファイルなら true を、そうでないなら false を返します。

julia> isfile(homedir())
false

julia> f = open("test_file.txt", "w");

julia> isfile(f)
true

julia> close(f); rm("test_file.txt")

isdir, ispath も参照してください。

islink(path) -> Bool

path がシンボリックリンクなら true を、そうでないなら false を返します。

Base.Filesystem.ismount ── 関数
ismount(path) -> Bool

path がマウントポイントなら true を、そうでないなら false を返します。

Base.Filesystem.ispath ── 関数
ispath(path) -> Bool

ファイルシステムにおける何らかの要素が path に存在するなら true を、そうでないなら false を返します。これは isfile, isdir などの関数を一般化したものです。

Base.Filesystem.issetgid ── 関数
issetgid(path) -> Bool

path に setgid フラグが立っているなら true を、そうでないなら false を返します。

Base.Filesystem.issetuid ── 関数
issetuid(path) -> Bool

path に setuid フラグが立っているなら true を、そうでないなら false を返します。

Base.Filesystem.issocket ── 関数
issocket(path) -> Bool

path がソケットなら true を、そうでないなら false を返します。

Base.Filesystem.issticky ── 関数
issticky(path) -> Bool

path にスティッキービットが立っているなら true を、そうでないなら false を返します。

Base.Filesystem.homedir ── 関数
homedir() -> String

現在のユーザーのホームディレクトリを返します。

情報

homedirlibuvuv_os_homedir を使ってホームディレクトリを計算します。環境変数を使ってホームディレクトリを設定する方法など、詳細は uv_os_homedirドキュメントを参照してください。

Base.Filesystem.dirname ── 関数
dirname(path::AbstractString) -> AbstractString

パスのディレクトリを表す部分を取得します。パスの最後の文字が '/' または '\' なら、それはパスの一部とみなされます。

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

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

basename も参照してください。

Base.Filesystem.basename ── 関数
basename(path::AbstractString) -> AbstractString

パスのファイルを表す部分を取得します。

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

dirname も参照してください。

[email protected]__FILE__ ── マクロ
@__FILE__ -> AbstractString

マクロの呼び出したコードがあるファイルのパスを表す文字列に展開されます。julia -e <expr> として評価されている場合は空文字列が返り、パーサーからソース情報を取得できない場合は nothing が返ります。

[email protected]__DIR__ ── マクロ
@__DIR__ -> AbstractString

マクロの呼び出したコードがあるファイルを含むディレクトリの絶対パスを表す文字列に展開されます。julia -e <expr> として評価されている場合はカレントワーキングディレクトリが返ります。

[email protected]__LINE__ ── マクロ
@__LINE__ -> Int

マクロを呼び出した位置の行番号に展開されます。行番号が分からなければ 0 が返ります。

isabspath(path::AbstractString) -> Bool

パスが絶対 (ルートディレクトリから始まる) かどうかを判定します。

julia> isabspath("/home")
true

julia> isabspath("home")
false
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 を省略するとカレントディレクトリが使われます。この関数はパスの計算を行うだけです: pathstartpath の存在あるいは性質を確認するためにファイルシステムにアクセスすることはありません。

expanduser(path::AbstractString) -> AbstractString

OS が Unix 系なら、パスの最初にあるチルダ文字を現在のユーザーのホームディレクトリに置き換えます。

Base.Filesystem.splitdir ── 関数
splitdir(path::AbstractString) -> (AbstractString, AbstractString)

パスをディレクトリ名とファイル名からなるタプルに分割します。

julia> splitdir("/home/myuser")
("/home", "myuser")
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", "")
splitpath(path::AbstractString) -> Vector{String}

ファイルパスをパスの要素に分割します。これは joinpath の逆と言えます。部分文字列の配列を返し、配列の各要素がパス中のディレクトリまたはファイルに対応します。path にルートディレクトリが存在するなら、それも返り値に含まれます。

Julia 1.1

この関数は Julia 1.1 以降でサポートされます。

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