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

这是答案:阅读文本数据

于 2012-11-26T14:52:47.763 回答
1

最可能的原因是该文件中的数据实际上并未以 UTF-8 编码,因此尝试解码为 UTF-8 最终会抛出异常。

于 2012-11-27T02:39:27.280 回答