Sponsored Link

ファイル操作/Stream

このセクションではテキストファイルやバイナリファイル、それからStream関連の情報を扱います。

テキストファイルの読み書き

外部リンク

補足

RDFについてはRDFの操作方法の憶 え方RDF Data Wrapper - RDF の操作XUL メモ: RDF 操作RDF研究などの情 報があります。

FOAFについてはFOAF Readerが 参考になるでしょう。

HTMLからテキストに変換したいならXUL メモ: HTML to TEXTなんてのが。

(全部XML系ですけど、一応テキストですよね…)

バイナリファイルの書き出し

バイナリファイルの書き出すにはnsIBinaryOutputStreamを使います。(上のテキストファイルの書き出しの改造版です。すんませ ん。>Piro氏)

aFileには書き出すファイルをnsIFileで。aDataに書き出したいデータを入れ、aTypeにどの型で出力するかを指定してください。

//バイナリファイルの書き出し
function writeBinaryTo(aFile,aData,aType){
if (aFile.exists()) aFile.remove(true); // 上書き確認は無し。必要があれば処理を追加。
aFile.create(aFile.NORMAL_FILE_TYPE, 0666); // アクセス権を8進数で指定。 Win9x などでは無視される。

var fileout = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream);
fileout.init(aFile, 2, 0x200, false); // open as "write only"

var binout = Components.classes["@mozilla.org/binaryoutputstream;1"]
.createInstance(Components.interfaces.nsIBinaryOutputStream);//ここが肝です
binout.setOutputStream(fileout);//初期化(?)

switch(aType){
case "8":
binout.write8( aData );
break;
case "16":
binout.write16( aData );
break;
case "32":
binout.write32( aData );
break;
case "64":
binout.write64( aData );
break;
case "boolean":
binout.writeBoolean( aData );
break;
case "byteArray":
binout.writeByteArray( aData , aData.length );
break;
case "bytes":
binout.writeBytes( aData , aData.length );
break;
case "double":
binout.writeDouble( aData );
break;
case "float":
binout.writeFloat( aData );
break;
case "stringZ":
binout.writeStringZ( aData );
break;
case "utf8Z"://注意:使おうとしても「未実装です」といわれてしまい、使えません。
binout.writeUtf8Z( aData );
break;
case "wStringZ":
binout.writeWStringZ( aData );
break;
default:
break;
}
fileout.close();
return file;
}

まだ詳しく調べているわけではありませんので、UTF8のほかにも使えないものがあるかもしれません。こんど簡単なビットマップを出力するアプリで も組んでみようかと思います。でも単純過ぎても面白くないのでQRコードでも出しますかね。

Contents

作成者:plus7 メール最終更新:2004/06/06