1

以下のxulプログラムを使用して、Windows XPでローカルに保存されたテキストファイルを読み込もうとしています:

function read_text_file(file_path)
{
  var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); 
  file.initWithPath(file_path); 
  var data = "";   
  var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);   
  var cstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"].createInstance(Components.interfaces.nsIConverterInputStream);   
  fstream.init(file, -1, 0, 0);
  cstream.init(fstream, "UTF-8", 0, 0); // you can use another encoding here if you wish   

  let (str = {}) {   
  let read = 0;   
  do {
      read = cstream.readString(0xffffffff, str); // read as much as we can and put it in str.value   
      data += str.value;   
     } 
  while (read != 0);
  }
  cstream.close(); // this closes fstream
  return data;
}

しかし、読み取りでエラーを取得 = cstream.readString(0xffffffff, str); :

Error: NS_ERROR_ILLEGAL_INPUT: Component returned failure code: 0x8050000e (NS_ERROR_ILLEGAL_INPUT) [nsIConverterInputStream.readString]
Source File: chrome://quicknote/content/overlay.js
Line: 168

ここでいくつかの説明を見つけましたが、役に立ちませんでした。 ここに画像の説明を入力

4

2 に答える 2

1

これの最も可能性の高い理由は、そのファイルのデータが実際には UTF-8 でエンコードされていないため、UTF-8 としてデコードしようとするとスローされることです。

于 2012-11-27T02:39:27.280 に答える
1

ここに答えがあります:テキストデータの読み取り

于 2012-11-26T14:52:47.763 に答える