ファイル管理 - Cinderella Documentation
Description: The user's guide to the Interactive Geometry Software Cinderella

コンテンツにスキップ

# ファイル管理

CindyScriptでファイル操作を行なういくつかの方法があります。しかし、これらのコマンドはHTMLページのアプレットでは動作しないことを注意してください。

### データの読み込み

#### ディレクトリを設定する: `setdirectory(<string>)`

説明: この演算子は、これ以降のファイルのディレクトリを設定します。ファイルの読み書きをするときは、対象となるディレクトリを設定してから行ないます。設定しない場合はエラーとなります。

例： Windowsでデスクトップにディレクトリを設定する場合、たとえば 　　　setdirectory(C:¥Documents and Settings\ユーザー名\デスクトップ); のようにします。デスクトップのディレクトリは、Windowsのバージョンによって異なりますので確かめてください。 Macintoshの場合も同様ですが、 Cinderella をデスクトップに置いてあれば 　　　setdirectory("../../../../"); でデスクトップを指定できます。Cinderellaがあるのと同じフォルダです。

#### データの読み込み: `load(<string>)`

説明: この演算子の引数 はファイル名とします。ディレクトリ名を含んでも構いません。 ファイル名が正しければ、ファイルに含まれる全情報が文字列として返されます。この演算子は `tokenize` とともに、データを解析するのに有用です。データは `setdirectory` で指定されたディレクトリから読まれます。

例: ファイル `LoadDemo.txt` には次のデータが入っているものとします。

`abc,gfdg;1,3,5.6,3.141;56,abc,xxx,yyy`

次のコードは、データを読み込んで ";" と "," によりトークン化されたリストを作ります。

    x=load("LoadTest.txt");
    y=tokenize(x,(";",","));
    apply(y,println(#));

結果として次のものを出力します。

    [abc,gfdg]
    [1,3,5.6,3.141]
    [56,abc,xxx,yyy]

#### プログラムコードの読み込み: `import(<string>)`

説明: この演算子の引数 はファイル名とします。ディレクトリ名を含んでも構いません。ファイル名が正しければ、ファイルの内容は CindyScript のコードとして解析され、実行されます。こうして、あらかじめ定義された関数ライブラリを読み込むことができます。 `import` 演算子は CindyScript の "Initialization" スロットだけで運用するのがよいでしょう。そうでないと、動作のたびに読み込まれることになります。

### ファイルへの書き出し

Cindy script のスクリプトをファイルへ書き出すこともできます。よく使われるのは次の手順です。

- 1. setdirectory()関数を用いてディレクトリを指定する。
- 1. ファイルを開く
- 1. ファイルに書く
- 1. ファイルを閉じる

これは次の命令で行ないます。

#### ファイルを開く: `openfile(<string>)`

説明: 指定した名前のファイルを開きます。戻り値はprint命令で必要なファイルハンドルです。

#### ファイルに書いて改行する: `println(<file>,<string>)`

説明: `println(...)` と同様ですが、 `<file>` で指定したファイルに書き出します。

#### ファイルに書く: `print(<file>,<string>)`

説明: `print(...)` と同様ですが `<file>` で指定したファイルに書き出します。

#### ファイルを閉じる: `closefile(<file>)`

説明: ファイルを閉じます。

例: 次の例は、ファイルに書き出す一連の手順を示します。:

    setdirectory("../../../../");
    f=openfile("myFile");
    println(f,"Here are some numbers");
    forall(1..15,print(f,#+" ");
    println(f,"");
    closefile(f);

これにより、次のような内容のファイルが作られます。:

    Here are some numbers
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

### HTMLとの連携

#### Webページを開く: `openurl(<string>)`

説明: のWebページをブラウザで開きます。

#### javascriptを呼びだす: `javascript(<string>)`

説明: 書き出されたアプレットにおいて、ブラウザの Javascript 環境での命令を呼びだします。この命令の内容は `<string>` に書きます。スタンドアロンのアプリケーションでは何もしません。

例: 次のコードでは、ブラウザ上にポップアップウィンドウを表示してメッセージを出します。

      javascript("alert('Hi from Cinderella!!')");

### ネットワーク

シンデレラでの TCP コマンドはほんの簡単なものだけです。しかしネットワークの基本的な機能はあります。インターネット上でデータを送受信することができるはずです。

#### TCP ポートを開く: `openconnection(<string>,<int>)`

説明: 第１引数で指定されたサーバーへのTCP接続を行い、第２引数で指定されたポートを開きます。戻り値は、このネットワーク接続へのハンドルです。

#### TCP へ書きだす: `print(<handle>,<string>)`

#### TCPへ書きだす: `println(<handle>,<string>)`

説明: `print` と `println` 関数は、ファイルだけでなく `openconnection`によって作られるネットワークへも書き出しを行ないます。

#### TCP ポートへの出力と消去: `flush(<handle>)`

説明: 与えられた接続への出力バッファを消去します。

#### TCP 接続からの読み込み: `readln(<handle>)`

説明: 与えられた接続から行を読みます。もしデータがなければ5秒後にタイムアウトします。

#### TCP 接続を閉じる: `closeconnection(<handle>)`

説明: 与えられたハンドルの接続を閉じます。

例:次のコードでは、Webサーバを開いて、そこからHTMLコードを読み出します。

    x=openconnection("cermat.org",80);
    println(x,"GET /");
    y="";
    while(!isundefined(y),y=readln(x);println(y));
    closeconnection(x);