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の拡張フォルダにアクセスできるわけではないということ.