2013-01-23 8 views
1

내 하드 드라이브에서 파일을 읽거나 쓸 때 XPCOM을 사용합니다 (Java는 FF16,17,18에서 더 이상 지원되지 않으므로 +이 파일을 사용해야합니다). FireFox 확장 프로그램에서 사용합니다 (iMacros를 사용합니다). 이 문서에서는 click이 예제를 발견했습니다.자바 스크립트 쓰기 파일 덮어 쓰기 없음

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 

답변

1

은 (대신 2) 출력 스트림을 초기화하기 때 두 번째 매개 변수로 전달 18보십시오. 입출력 모드 파라미터에 PR_APPEND 플래그를 추가

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

은 (그것의 0x10 상기 2PR_WRONLY입니다).

+0

직장에 좋습니다. 곧 어떻게 작동하는지보고 할 것입니다. OK는 작동하고 썼지 만별로는 아닙니다. 여전히 기존 파일을 만들려고 할 때 오류가 발생하며 데이터가 기존 텍스트의 같은 줄에 작성된 새 줄로 이동되지 않습니다. converterStream.writeString ("\ n");으로 해결할 수 있습니다. 본문을 쓰기 전에 파일을 만드는 오류를 해결하는 방법? – macroscripts