Home English

Kuina-chan

くいなちゃんOct 17, 2017


プログラミング言語Kuin」の「fileライブラリ」についてです。

fileライブラリ

Kuinに標準的に用意されているライブラリのうち、ファイルやディレクトリを操作するライブラリ「file.kn」を解説します。
ファイルパスに使うディレクトリの区切り文字は「\」ではなく「/」を使い、ファイルではなくディレクトリを表す場合は末尾に「/」を付けてください。
fileライブラリに用意されているものはfileライブラリの通りです。
fileライブラリ
名前 説明
file@copyDir ディレクトリをコピーする関数
file@copyFile ファイルをコピーする関数
file@delDir ディレクトリを削除する関数
file@delExt ファイルパスから拡張子を削除する関数
file@delFile ファイルを削除する関数
file@dir ファイルパスからディレクトリを抜き出す関数
file@exeDir 自身の実行ファイルがあるディレクトリを取得する関数
file@exist ファイルやディレクトリが存在するかどうかを取得する関数
file@fileName ファイルパスからファイル名を抜き出す関数
file@fileSize ファイルサイズを取得する関数
file@forEach ファイルやディレクトリを列挙する関数
file@makeDir ディレクトリを作成する関数
file@makeReader ファイル読み込みクラスのインスタンスを生成する関数
file@makeWriter ファイル書き込みクラスのインスタンスを生成する関数
file@moveFile ファイルを移動する関数
file@sysDir 特殊なディレクトリのパスを取得する関数
file@Origin ファイルシーク時の基点を表す列挙型
file@Reader ファイル読み込みクラス
file@SysDir 特殊なディレクトリを表す列挙型
file@Writer ファイル書き込みクラス

file@copyDir

「file@copyDir」はディレクトリをコピーする関数です(file@copyDir関数の定義)。
file@copyDir関数の定義

 func copyDir(dst: []char, src: []char): bool

dst コピー先のディレクトリのパス
src コピー元のディレクトリのパス
戻り値 コピーに成功したらtrue、失敗したらfalse
中身のサブディレクトリやファイルもすべてコピーされます。

file@copyFile

「file@copyFile」はファイルをコピーする関数です(file@copyFile関数の定義)。
file@copyFile関数の定義

 func copyFile(dst: []char, src: []char): bool

dst コピー先のファイルのパス
src コピー元のファイルのパス
戻り値 コピーに成功したらtrue、失敗したらfalse

file@delDir

「file@delDir」はディレクトリを削除する関数です(file@delDir関数の定義)。
file@delDir関数の定義

 func delDir(path: []char): bool

path 削除するディレクトリのパス
戻り値 削除に成功したらtrue、失敗したらfalse
中身のサブディレクトリやファイルもすべて削除されます。
対象のディレクトリが存在しない場合は何もせずにtrueを返します。

file@delExt

「file@delExt」はファイルパスから拡張子を削除する関数です(file@delExt関数の定義)。
file@delExt関数の定義

 func delExt(path: []char): []char

path ファイルパス
戻り値 拡張子を削除したファイルパス
例えば「"a/b/c.txt"」を渡すと、「"a/b/c"」が返ります。
pathに拡張子が含まれていなかった場合は、pathがそのまま返ります。

file@delFile

「file@delFile」はファイルを削除する関数です(file@delFile関数の定義)。
file@delFile関数の定義

 func delFile(path: []char): bool

path 削除するファイルのパス
戻り値 削除に成功したらtrue、失敗したらfalse
対象のファイルが存在しない場合は何もせずにtrueを返します。

file@dir

「file@dir」はファイルパスからディレクトリを抜き出す関数です(file@dir関数の定義)。
file@dir関数の定義

 func dir(path: []char): []char

path ファイルパス
戻り値 ディレクトリを抜き出したファイルパス
例えば「"a/b/c.txt"」を渡すと、「"a/b/"」が返ります。 「"example.txt"」のようにディレクトリ区切り文字を含まないパスを渡すと「"./"」が返ります。

file@exeDir

「file@exeDir」は自身の実行ファイルがあるディレクトリを取得する関数です(file@exeDir関数の定義)。
file@exeDir関数の定義

 func exeDir(): []char

戻り値 自身の実行ファイルがあるディレクトリのファイルパス。 取得に失敗したらnullが返る

file@exist

「file@exist」はファイルやディレクトリが存在するかどうかを取得する関数です(file@exist関数の定義)。
file@exist関数の定義

 func exist(path: []char): bool

path ファイルやディレクトリのパス
戻り値 ファイルやディレクトリが存在したらtrue、しなければfalse

file@fileName

「file@fileName」はファイルパスからファイル名を抜き出す関数です(file@fileName関数の定義)。
file@fileName関数の定義

 func fileName(path: []char): []char

path ファイルパス
戻り値 抜き出したファイル名
例えば「"a/b/c.txt"」を渡すと、「"c.txt"」が返ります。

file@fileSize

「file@fileSize」はファイルサイズを取得する関数です(file@fileSize関数の定義)。
file@fileSize関数の定義

 func fileSize(path: []char): int

path サイズを取得するファイルのパス
戻り値 ファイルサイズ[byte]
「file@fileSize」が生成する例外はfile@fileSize関数の例外の通りです。
file@fileSize関数の例外
発生条件 ビルド 例外コード
(16進数)
ファイルの読み込みに失敗 dbg、rls E9170007

file@forEach

「file@forEach」はファイルやディレクトリを列挙する関数です(file@forEach関数の定義)。
file@forEach関数の定義

 func forEach(path: []char, recursion: bool, callback: func<([]char, bool, kuin@Class): bool>, data: kuin@Class): bool

path ディレクトリのパス
recursion ディレクトリを再帰的に走査するならtrue、しないならfalse
callback コールバック関数
data コールバック関数に渡される任意のデータ
戻り値 最後まで列挙したらtrue、中断したりエラーが発生したらfalse
この関数は「Kuin 2017.10.17」で追加された関数です。
ファイルやディレクトリが見つかるたび、callbackが呼ばれます。 callbackの引数にはそれぞれ「ファイルやディレクトリのパス」「ディレクトリならtrue、ファイルならfalse」「dataの値」が渡ります。
callbackにはpathのディレクトリ自身も渡ります。 callbackの戻り値がtrueなら走査を続行し、falseなら中断します。
recursionがtrueの場合、ディレクトリを再帰的に走査してすべてのファイルとディレクトリを列挙します。 recursionがfalseの場合、path内の階層にあるファイルだけを列挙して抜けます。

file@makeDir

「file@makeDir」はディレクトリを作成する関数です(file@makeDir関数の定義)。
file@makeDir関数の定義

 func makeDir(path: []char): bool

path 作成するディレクトリのパス
戻り値 作成に成功したらtrue、失敗したらfalse
既にディレクトリが存在していた場合、中身のサブディレクトリやファイルをすべて削除してから新たに作成します。
「file@makeDir」が生成する例外はfile@makeDir関数の例外の通りです。
file@makeDir関数の例外
発生条件 ビルド 例外コード
(16進数)
pathが260文字を超える dbgのみ E9170006

file@makeReader

「file@makeReader」は、ファイル読み込みクラスのインスタンスを生成する関数です(file@makeReader関数の定義)。
file@makeReader関数の定義

 func makeReader(path: []char): file@Reader

path 読み込むファイル
戻り値 ファイル読み込みクラスのインスタンス

file@makeWriter

「file@makeWriter」は、ファイル読み込みクラスのインスタンスを生成する関数です(file@makeWriter関数の定義)。
file@makeWriter関数の定義

 func makeWriter(path: []char, append: bool): file@Writer

path 書き込むファイル
append 既にファイルが存在したとき、falseを指定すると内容が消去されて新規ファイルとして書き込まれ、trueを指定すると既存の内容の末尾に追記される
戻り値 ファイル書き込みクラスのインスタンス

file@moveFile

「file@moveFile」はファイルを移動する関数です(file@moveFile関数の定義)。
file@moveFile関数の定義

 func moveFile(dst: []char, src: []char): bool

dst 移動先のファイルのパス
src 移動元のファイルのパス
戻り値 移動に成功したらtrue、失敗したらfalse

file@sysDir

「file@sysDir」は特殊なディレクトリのパスを取得する関数です(file@sysDir関数の定義)。
file@sysDir関数の定義

 func sysDir(kind: file@SysDir): bool

kind 特殊なディレクトリ
戻り値 取得したパス

file@Origin

「file@Origin」はファイルシーク時の基点を表す列挙型で、定義はfile@Origin列挙型の定義の通りです。
file@Origin列挙型の定義
名前 説明
%cur 現在位置
%head ファイルの先頭
%tail ファイルの末尾を1byte超えた地点。 つまり、ファイルの先頭からファイルサイズ分を足した地点

file@Reader

「file@Reader」はファイルを読み込むクラスで、定義はfile@Readerクラスの定義の通りです。
file@Readerクラスの定義
名前 説明
file@Reader.delimiter 読み込み時の区切り文字を設定するメソッド
file@Reader.fileSize ファイルサイズを取得するメソッド
file@Reader.fin ファイル読み込みを閉じるメソッド
file@Reader.getPos 読み込み位置を取得するメソッド
file@Reader.read バイナリで読み込むメソッド
file@Reader.readChar 文字として読み込むメソッド
file@Reader.readFloat 小数として読み込むメソッド
file@Reader.readInt 整数として読み込むメソッド
file@Reader.readLetter 区切り文字を無視して1文字読み込むメソッド
file@Reader.readLine 区切り文字を無視して1行読み込むメソッド
file@Reader.readStr 文字列として読み込むメソッド
file@Reader.setPos 読み込み位置を設定するメソッド
file@Reader.term ファイル終端かどうかを取得するメソッド

file@Reader.delimiter

「file@Reader.delimiter」はファイルの区切り文字を設定するメソッドです(file@Reader.delimiterメソッドの定義)。
file@Reader.delimiterメソッドの定義

 func delimiter(delimiters: []char)

delimiters 区切り文字を格納した配列
file@Readerクラスのインスタンスが生成されたときに、区切り文字は半角スペースとカンマ([' ', ','])に設定されています。
また、区切り文字の設定にかかわらず、改行とファイル終端は区切り文字として扱われます。
「file@Reader.delimiter」が生成する例外はfile@Reader.delimiterメソッドの例外の通りです。
file@Reader.delimiterメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A

file@Reader.fileSize

「file@Reader.fileSize」はファイルのサイズを取得するメソッドです(file@Reader.fileSizeメソッドの定義)。
file@Reader.fileSizeメソッドの定義

 func fileSize(): int

戻り値 ファイルサイズ[byte]
「file@Reader.fileSize」が生成する例外はfile@Reader.fileSizeメソッドの例外の通りです。
file@Reader.fileSizeメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A

file@Reader.fin

「file@Reader.fin」はファイルを閉じるメソッドです(file@Reader.finメソッドの定義)。
file@Reader.finメソッドの定義

 func fin()

既にファイルが閉じられているとき、このメソッドは何もしません。
ファイルはfile@Readerクラスのインスタンスが解放されるときに自動で閉じられます。 このメソッドは、閉じるタイミングを明示的に制御したいときにお使いください。

file@Reader.getPos

「file@Reader.getPos」はファイルの読み込み位置を取得するメソッドです(file@Reader.getPosメソッドの定義)。
file@Reader.getPosメソッドの定義

 func getPos(): int

戻り値 読み込み位置[byte]
「file@Reader.getPos」が生成する例外はfile@Reader.getPosメソッドの例外の通りです。
file@Reader.getPosメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A

file@Reader.read

「file@Reader.read」はファイルからデータをバイナリとして読み込むメソッドです(file@Reader.readメソッドの定義)。
file@Reader.readメソッドの定義

 func read(size: int): []bit8

size 読み込むデータのサイズ[byte]
戻り値 読み込んだデータ
「file@Reader.read」が生成する例外はfile@Reader.readメソッドの例外の通りです。
file@Reader.readメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A
データの残りサイズがsizeで指定した値よりも小さい dbg、rls E9170008

file@Reader.readChar

「file@Reader.readChar」はファイルからデータを文字として読み込むメソッドです(file@Reader.readCharメソッドの定義)。
file@Reader.readCharメソッドの定義

 func readChar(): char

戻り値 読み込んだデータ
「file@Reader.readChar」が生成する例外はfile@Reader.readCharメソッドの例外の通りです。
file@Reader.readCharメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A
読み込み位置にcharのデータが存在しない dbg、rls E9170008
file@Reader.readCharメソッドの仕様はfile@Reader.readCharメソッドの仕様の通りです。
  • このメソッドは、読み込み位置から区切り文字を読み飛ばして、区切り文字以外のデータを文字として読み込んだあと、再度区切り文字を読み飛ばしてからメソッドを抜ける。
file@Reader.readCharメソッドの仕様

file@Reader.readFloat

「file@Reader.readFloat」はファイルからデータを小数として読み込むメソッドです(file@Reader.readFloatメソッドの定義)。
file@Reader.readFloatメソッドの定義

 func readFloat(): float

戻り値 読み込んだデータ
「file@Reader.readFloat」が生成する例外はfile@Reader.readFloatメソッドの例外の通りです。
file@Reader.readFloatメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A
読み込み位置にfloatのデータが存在しない dbg、rls E9170008
file@Reader.readFloatメソッドの仕様はfile@Reader.readFloatメソッドの仕様の通りです。
  • このメソッドは、読み込み位置から区切り文字を読み飛ばして、区切り文字以外のデータを小数として読み込んだあと、再度区切り文字を読み飛ばしてからメソッドを抜ける。
file@Reader.readFloatメソッドの仕様

file@Reader.readInt

「file@Reader.readInt」はファイルからデータを整数として読み込むメソッドです(file@Reader.readIntメソッドの定義)。
file@Reader.readIntメソッドの定義

 func readInt(): int

戻り値 読み込んだデータ
「file@Reader.readInt」が生成する例外はfile@Reader.readIntメソッドの例外の通りです。
file@Reader.readIntメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A
読み込み位置にintのデータが存在しない dbg、rls E9170008
file@Reader.readIntメソッドの仕様はfile@Reader.readIntメソッドの仕様の通りです。
  • このメソッドは、読み込み位置から区切り文字を読み飛ばして、区切り文字以外のデータを整数として読み込んだあと、再度区切り文字を読み飛ばしてからメソッドを抜ける。
file@Reader.readIntメソッドの仕様

file@Reader.readLetter

「file@Reader.readLetter」はファイルからデータを、区切り文字を無視して1文字読み込むメソッドです(file@Reader.readLetterメソッドの定義)。
file@Reader.readLetterメソッドの定義

 func readLetter(): char

戻り値 読み込んだデータ
このメソッドは、区切り文字の仕組みを使わず、1文字ずつ厳密に処理したい場合に便利です。
「file@Reader.readLetter」が生成する例外はfile@Reader.readLetterメソッドの例外の通りです。
file@Reader.readLetterメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A
読み込み位置にこれ以上データが存在しない dbg、rls E9170008

file@Reader.readLine

「file@Reader.readLine」はファイルからデータを、区切り文字を無視して1行読み込むメソッドです(file@Reader.readLineメソッドの定義)。
file@Reader.readLineメソッドの定義

 func readLine(): []char

戻り値 読み込んだデータ
このメソッドは、区切り文字の仕組みを使わず、1行ずつ厳密に処理したい場合に便利です。
「file@Reader.readLine」が生成する例外はfile@Reader.readLineメソッドの例外の通りです。
file@Reader.readLineメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A
読み込み位置にこれ以上データが存在しない dbg、rls E9170008

file@Reader.readStr

「file@Reader.readStr」はファイルからデータを文字列として読み込むメソッドです(file@Reader.readStrメソッドの定義)。
file@Reader.readStrメソッドの定義

 func readStr(): []char

戻り値 読み込んだデータ
「file@Reader.readStr」が生成する例外はfile@Reader.readStrメソッドの例外の通りです。
file@Reader.readStrメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A
読み込み位置に[]charのデータが存在しない dbg、rls E9170008
file@Reader.readStrメソッドの仕様はfile@Reader.readStrメソッドの仕様の通りです。
  • このメソッドは、読み込み位置から区切り文字を読み飛ばして、区切り文字以外のデータを文字列として読み込んだあと、再度区切り文字を読み飛ばしてからメソッドを抜ける。
file@Reader.readStrメソッドの仕様

file@Reader.setPos

「file@Reader.setPos」はファイルの読み込み位置を設定するメソッドです(file@Reader.setPosメソッドの定義)。
file@Reader.setPosメソッドの定義

 func setPos(origin: file@Origin, pos: int)

origin 読み込み位置の基点
pos 読み込み位置[byte]
originを基点として、posの値だけ増減させた位置へ移動します。 例えば、現在の読み込み位置から4byte戻す場合はoriginに「%cur」、posに「-4」を渡します。
ファイルの終端よりも後ろに移動した場合は例外は発生しません。 その位置でデータを読み込んだ場合はファイル終端と同等に扱われます。
「file@Reader.setPos」が生成する例外はfile@Reader.setPosメソッドの例外の通りです。
file@Reader.setPosメソッドの例外
発生条件 ビルド 例外コード
(16進数)
originの値が有効範囲外 dbgのみ E9170006
ファイルの先頭よりも前へ移動した dbgのみ E9170006
ファイルが閉じられている dbgのみ E917000A

file@Reader.term

「file@Reader.term」はファイルの読み込み位置がファイル終端かどうかを取得するメソッドです(file@Reader.termメソッドの定義)。
file@Reader.termメソッドの定義

 func term(): bool

戻り値 読み込み位置がファイル終端ならtrue、まだ読み込めるデータが残っているならfalse
「file@Reader.term」が生成する例外はfile@Reader.termメソッドの例外の通りです。
file@Reader.termメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A

file@SysDir

「file@SysDir」は特殊なディレクトリを表す列挙型で、定義はfile@SysDir列挙型の定義の通りです。
file@SysDir列挙型の定義
名前 説明
%appData アプリケーションデータ
%desktop デスクトップ
%fonts フォント
%programFiles ProgramFiles
%system32 System32
%windows Windowsディレクトリ

file@Writer

「file@Writer」はファイルを書き込むクラスで、定義はfile@Writerクラスの定義の通りです。
file@Writerクラスの定義
名前 説明
file@Writer.fin ファイル書き込みを閉じるメソッド
file@Writer.getPos 書き込み位置を取得するメソッド
file@Writer.setPos 書き込み位置を設定するメソッド
file@Writer.write バイナリを書き込むメソッド
file@Writer.writeChar 文字を書き込むメソッド
file@Writer.writeFloat 小数を書き込むメソッド
file@Writer.writeInt 整数を書き込むメソッド
file@Writer.writeStr 文字列を書き込むメソッド

file@Writer.fin

「file@Writer.fin」はファイルを閉じるメソッドです(file@Writer.finメソッドの定義)。
file@Writer.finメソッドの定義

 func fin()

既にファイルが閉じられているとき、このメソッドは何もしません。
ファイルはfile@Writerクラスのインスタンスが解放されるときに自動で閉じられます。 このメソッドは、閉じるタイミングを明示的に制御したいときにお使いください。

file@Writer.getPos

「file@Writer.getPos」はファイルの書き込み位置を取得するメソッドです(file@Writer.getPosメソッドの定義)。
file@Writer.getPosメソッドの定義

 func getPos(): int

戻り値 書き込み位置[byte]
「file@Writer.getPos」が生成する例外はfile@Writer.getPosメソッドの例外の通りです。
file@Writer.getPosメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A

file@Writer.setPos

「file@Writer.setPos」はファイルの書き込み位置を設定するメソッドです(file@Writer.setPosメソッドの定義)。
file@Writer.setPosメソッドの定義

 func setPos(origin: file@Origin, pos: int)

origin 書き込み位置の基点
pos 書き込み位置[byte]
originを基点として、posの値だけ増減させた位置へ移動します。 例えば、現在の書き込み位置から4byte戻す場合はoriginに「%cur」、posに「-4」を渡します。
ファイルの終端よりも後ろに移動した場合は例外は発生しません。 その位置でデータを書き込んだ場合は、ファイル終端からそこまでの隙間が自動的に0で埋められます。
「file@Writer.setPos」が生成する例外はfile@Writer.setPosメソッドの例外の通りです。
file@Writer.setPosメソッドの例外
発生条件 ビルド 例外コード
(16進数)
originの値が有効範囲外 dbgのみ E9170006
ファイルの先頭よりも前へ移動した dbgのみ E9170006
ファイルが閉じられている dbgのみ E917000A

file@Writer.write

「file@Writer.write」はファイルへバイナリを書き込むメソッドです(file@Writer.writeメソッドの定義)。
file@Writer.writeメソッドの定義

 func write(bin: []bit8)

bin 書き込むデータ
「file@Writer.write」が生成する例外はfile@Writer.writeメソッドの例外の通りです。
file@Writer.writeメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A

file@Writer.writeChar

「file@Writer.writeChar」はファイルへ文字を書き込むメソッドです(file@Writer.writeCharメソッドの定義)。
file@Writer.writeCharメソッドの定義

 func writeChar(n: char)

n 書き込むデータ
「file@Writer.writeChar」が生成する例外はfile@Writer.writeCharメソッドの例外の通りです。
file@Writer.writeCharメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A

file@Writer.writeFloat

「file@Writer.writeFloat」はファイルへ小数を書き込むメソッドです(file@Writer.writeFloatメソッドの定義)。
file@Writer.writeFloatメソッドの定義

 func writeFloat(n: float)

n 書き込むデータ
「file@Writer.writeFloat」が生成する例外はfile@Writer.writeFloatメソッドの例外の通りです。
file@Writer.writeFloatメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A

file@Writer.writeInt

「file@Writer.writeInt」はファイルへ整数を書き込むメソッドです(file@Writer.writeIntメソッドの定義)。
file@Writer.writeIntメソッドの定義

 func writeInt(n: int)

n 書き込むデータ
「file@Writer.writeInt」が生成する例外はfile@Writer.writeIntメソッドの例外の通りです。
file@Writer.writeIntメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A

file@Writer.writeStr

「file@Writer.writeStr」はファイルへ文字列を書き込むメソッドです(file@Writer.writeStrメソッドの定義)。
file@Writer.writeStrメソッドの定義

 func writeStr(n: []char)

n 書き込むデータ。 nullであってはならない
「file@Writer.writeStr」が生成する例外はfile@Writer.writeStrメソッドの例外の通りです。
file@Writer.writeStrメソッドの例外
発生条件 ビルド 例外コード
(16進数)
ファイルが閉じられている dbgのみ E917000A
1508205359ja