blog.kur.jp

バイオリンと山、自転車をこよなく愛するkurのチラシの裏。たまには技術的なことを書いたりするかも知れません。

XULからローカルファイルの読み込み・書き込みを行う

XULからローカルのファイルを読み書きする必要があったので,その方法を調べていた.

Mozilla developer centerを見ているとFIle I/Oについてのページがあって,これによるとXPCOMを利用することによって,ローカルファイルにアクセスすることが可能になるようです.ただし,このページに従うと,結構コードが複雑になってしまいそうなので,ラッパーライブラリを利用することに.

今回利用したのは,Io.jsというライブラリです.めんどくさい部分が見えないようになってるし,わかりやすいサンプルコードがついているので,非常に利用しやすいです.

実際の利用法法としては,XULファイルから,下記のような感じでio.jsを呼びだすように記述.

<script type="application/x-javascript" src="io.js" />
<script type="application/x-javascript" src="myxulcode.js" />

そして,メインのコードの中から下記のような感じで,IO.jsを利用してやれば良い.

var fileIn = FileIO.open('C:\\aaa\\aaaaaa.txt');
if (fileIn.exists()) {      var fileOut = FileIO.open('C:\\aaa\\bbbbbb.txt');      var str = FileIO.read(fileIn);      var rv = FileIO.write(fileOut, str);      alert('File write: ' + rv);      rv = FileIO.write(fileOut, str, 'a');      alert('File append: ' + rv);      rv = FileIO.unlink(fileOut);      alert('File unlink: ' + rv);
}

注意点としては,FileIo.openは中でnsILocalFileのinitWithPathを呼び出しているだけなので,FireFoxの拡張フォルダにアクセスできるわけではないということ.