特定フォルダ内のテキストファイルを、ActiveX無しに読み書きしたい

  • ページ: 目安箱
  • 投稿者: ne_Sachirou?
  • 優先順位: 低
  • 状態: 完了
  • カテゴリー: AzureaScript?
  • 投稿日: 2011-05-04 (水) 03:50:56
  • バージョン: 1.3.2Beta17

メッセージ

特定フォルダ内のテキストファイルを、ActiveX無しに読み書きしたい

具体的に、次の用途を想定している。前提として、ActiveXをonにせず、外部appも使用しないものとする。

1. scriptのrequire
現状、他のAzureaScript?と協業する方法が無い。他のscriptで定義された関数を使おうにも、相当の制限の元、iniにて関数定義を文字列渡しする他に無い。webブラウザではグローバル変数を使い、CommmonJSではexport変数とrequire関数を使う。 jsをテキストファイルとして読み込めれば、evalする事で代替出来る。

2. script独自の設定ファイル・保存領域
現在、iniへ[user.*]で書き込む事で、script独自の設定が出来る。 然し、複雑な書式で設定を行えず、又、scriptが大規模に成り設定項目が増えたり、scriptの個数自体が増えると、目視で設定するのは困難である。

セキュリティ上の観点からも、用途の観点からも、特定のフォルダへ読み書きの権限を制限するので充分と見做せる。 洞のフォルダに限定するかで、二案考えられる。

1. Scriptsフォルダ内
自明である。

2. 其々のscript毎に特別なフォルダを用意し、其所へ限定する
他のscriptを書き換えられると、不都合な場合が有る。 上記特定のフォルダは、命名規則に従ったものを、ユーザーに手動で作らせても好い。何らかの設定規則により、自動で作成しても好い。 上記特定のフォルダは、Scriptsフォルダ下に有っても、其の外でも、script側で困る事は無い。 requireは、自分を読み込んで欲しいscriptを上記特定のフォルダ内へ置き、其れを能動的に読みに行く。独自の設定ファイルも、scriptが自由にすればよい。軈て広まれば、標準も出来るであろう。

提案

どれがいい?全部嫌だからこういうのがいい!もお待ちしています。

案1

// とりあえず読み書きAPIを並べる
// 読み出し
System.fileIO.read("path/to", enc);
// 書き込み
System.fileIO.write("path/to", data, enc);
// 追記
System.fileIO.append("path/to", data, enc);

案2

// Silverlight風味
// 取得
var fileStore = System.getFileStore();
// 読み込み
fileStore.read("path/to", enc);
// 書き込み
fileStore.write("path/to", data, enc);
// 追記
fileStore.append("path/to", data, enc);

案3

// C++とかJava風味
// 取得
var file = System.fileIO.open("path/to", enc);
// 読み込み
file.read();
// 書き込み
file.write(data);
// 追記
file.append(data);

  • 賛成に一票。文字コードはShift_JISとUTF-8両対応がいいなあ。他のスクリプトを書き換えられると怖いのでたしかにスクリプトごとに読み書きできるフォルダを固定してる方がよさそうです。フォルダ名は「スクリプト名_data」とかでいいかも。 -- mutaguchi? 2011-05-04 (水) 11:05:23
  • その場合はスクリプト間で共用する共通ルーチンを置けなくなるので、それとは別に共用ルーチンを置く専用のScripts\commonなんてフォルダがあるといいのかも。 -- mutaguchi? 2011-05-04 (水) 11:07:24
  • API草案書いてきました。 -- tmyt? 2011-05-04 (水) 18:53:32
  • 案1に一票。getとかopenとかして何かのオブジェクトを得て、そのあとにすることはread/write/appendのどれかしかないので、あえてオブジェクトで一度受ける必要はないかと。案3にいたってはclose()がないと気持ち悪いですし、しかしこの3つのメソッドしかないならclose()の存在は無駄ですし何とももやもやしますw -- mutaguchi? 2011-05-04 (水) 22:32:00
  • あ、でもappendだけは一つのstreamに何度もやる可能性はなきにしもあらず? -- mutaguchi? 2011-05-04 (水) 22:33:44
  • 1回streamを開いて、それに複数回appendするような使い方を想定するなら案3を採用してclose()メソッドをサポートする、appendもwriteと同じく書き込んだら即streamを閉じるようにするなら案1、かな。 -- mutaguchi? 2011-05-04 (水) 22:38:36
  • callback案を書こうと思ったけど、やめました。   案1で良いかと思います。read, write丈ではなく、ファイルやフォルダのcreate, deleteや、フォルダ内のファイル+ファルダ名一覧を取得するmethodも考慮して頂ければ。フォルダは作成できなくてもいいかもしれません。   全script共有フォルダも良い考えだと思います。 -- ne_Sachirou? 2011-05-05 (木) 22:56:33
  • スクリプト固有の領域と共有領域を分けるのであればSilverlight風にgetSharedStore?(), getPrivateStore?() みたいな感じにしてからread/writeその他を呼べた方がいい気もします -- tmyt? 2011-05-06 (金) 02:45:37
  • メンバを分けるとしても別にgetHogehogeじゃなくてhogehoge.readで十分か -- tmyt? 2011-05-06 (金) 03:06:43
  • もしくは引数を増やすとか?write(fileName,folder,data,enc)とか。folderは"private"か"shared"。いまいちかも -- mutaguchi? 2011-05-06 (金) 11:33:33

もし見えてたら空欄にしてね!:

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-08-27 (土) 10:33:40 (1247d)