1

XPCOMを使用してハードドライブ上のファイルの読み取り/書き込みを行っています(JavaはFF16、17、18、+でサポートされなくなったため、これを使用する必要があります)。私はFireFox拡張機能でそれを使用しています(私はiMacrosを使用しています)。このドキュメントをクリック すると、この例が見つかりました。

var string = '\u5909\u63db\u30c6\u30b9\u30c8';
file.initWithPath('C:\\temp\\temp.txt');
file.create(file.NORMAL_FILE_TYPE, 0666);
var charset = 'EUC-JP';
var fileStream = Components
.classes['@mozilla.org/network/file-output-stream;1']
.createInstance(Components.interfaces.nsIFileOutputStream);
fileStream.init(file, 2, 0x200, false);
var converterStream = Components
.classes['@mozilla.org/intl/converter-output-stream;1']
.createInstance(Components.interfaces.nsIConverterOutputStream);
converterStream.init(fileStream, charset, string.length,
Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
converterStream.writeString(string);
converterStream.close();
fileStream.close();

したがって、このコードは次のことを行います。ファイルが存在しない場合は、ファイルを作成してデータを保存します。ただし、ファイルが存在する場合はエラーが返されます。コードのその部分(およびファイルが存在する)にコメントすると、古いデータが上書きされ、新しいデータが配置されます。

ファイルを作成するためにこのコードが必要です。ファイルが存在する場合は、エラーなしで先に進み、上書きせずに新しい行にデータを保存します。

このような。

前:

data11, data12, data13
data21, data22, data23

後:

data11, data12, data13
data21, data22, data23
data31, data32, data33
data41, data42, data43
4

1 に答える 1

1

18(2ではなく)出力ストリームを初期化するときに、2番目のパラメーターとして渡してみてください。

fileStream.init(file, 18, 0x200, false);

PR_APPENDこれにより、ioモードパラメータにフラグが追加されます(これは0x10;2ですPR_WRONLY)。

于 2013-01-23T22:46:08.933 に答える