カナデKanade

ファイルを扱おう

ファイルを読み書きする【ファイル】モジュールを知りましょう。

【ファイル】モジュールは、コンピューターのファイルとフォルダを読み書きします。ブラウザはセキュリティ上、ユーザーのファイルに自由にアクセスできないので、このモジュールは、コンピューターにインストールして使うHanaランタイム(ターミナルでスクリプトを動かすプログラム)で実行するときだけ使えます。このドキュメントの実行ボタンやプレイグラウンドで持ってくると「『ファイル』モジュールはブラウザでは使えません。」というエラーになりますが、それが正常です。以下の例は、自分のコンピューターのHanaランタイムで.kndファイルを作って動かしてみてください。

道具 できること
〈読む〉(パス) ファイルの内容を文字列で返します
〈行で読む〉(パス) 行ごとに分けたリストで返します(改行と最後の空行は除きます)
〈書く〉(パス, 文字列) ファイルを作るか、まるごと上書きします
〈追記〉(パス, 文字列) ファイルの末尾に続けて書きます(なければ作ります)
〈あるか〉(パス) ファイルやフォルダがあるかを真/偽で教えます
〈フォルダか〉(パス) フォルダかどうかを教えます(なければ偽)
〈削除〉(パス) ファイルや空のフォルダを削除します
〈一覧〉(フォルダ) フォルダの中の名前を並べ替えてリストで返します
〈フォルダ作成〉(パス) フォルダを作ります(上のフォルダもなければ一緒に、すでにあってもOKです)
〈移動〉(元のパス, 新しいパス) 名前を変えたり移したりします(新しいパスにファイルがあれば上書きします)

パスはHanaランタイムを実行したフォルダが基準で、文字列はUTF-8で読み書きします。書く、追記、移動、フォルダ作成、削除は空っぽを返します。

【ファイル】から〈書く〉を持ってこよう
【ファイル】から〈追記〉を持ってこよう
【ファイル】から〈読む〉を持ってこよう
【ファイル】から〈行で読む〉を持ってこよう
【ファイル】から〈削除〉を持ってこよう

〈書く〉(「メモ.txt」, 「1行目\n」)を実行しよう
〈追記〉(「メモ.txt」, 「2行目\n」)を実行しよう
〈読む〉(「メモ.txt」)を出力しよう
〈行で読む〉(「メモ.txt」)を出力しよう
〈削除〉(「メモ.txt」)を実行しよう

ないファイルを読んだり、フォルダをファイルのように読んだりするとエラーになるので、〈あるか〉で先に確かめるか、とりあえずやってみようで囲みます。

【ファイル】から〈あるか〉を持ってこよう
【ファイル】から〈読む〉を持ってこよう

もし(〈あるか〉(「設定.txt」))なら:
    〈読む〉(「設定.txt」)を出力しよう
それ以外なら:
    「設定ファイルはまだありません。」を出力しよう

ファイルアクセスを止める

Hanaランタイムは、標準でファイルアクセスを許可します。信用できないスクリプトを動かすときは、実行時に--allow-file=falseオプションを付けて止められます(--allow-fileだけを付けるか何も付けなければ許可です)。止めると【ファイル】のすべての道具が「この実行ではファイルアクセスが無効になっています。」というエラーを出し、何も読み書きしません。スクリプトが別の.kndファイルを持ってくること(「ファイル」から持ってこよう)は言語の機能なので、このオプションとは関係ありません。

ファイルのパスをつなげたり分けたり、拡張子を変えたりする作業は、ブラウザでも動く【パス】モジュールが手伝います。基本文法チュートリアルの13章で見てみましょう。

プレイグラウンド
結果
コードを書いて「実行」ボタンを押してください。