Я работаю над проектом (BrowserIO - перейдите на browserio dot googlecode dot com, если вы хотите проверить код и поработать над ним. Помогите приветствовать!), В котором я использую nsIFileInputStream в Firefox вместе с nsIConverterInputStream согласно их примеру (https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO#Simple),, но загружается только часть полных данных. Код:
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(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
var str = {};
cstream.readString(-1, str); // read the whole file and put it in str.value
data = str.value;
cstream.close(); // this closes fstream
Если вы хотите увидеть это поведение, извлеките код со страницы проекта BrowserIO и используйте Firebug, чтобы установить точку останова на строке data = str.value;
в файле file_io.js. Затем выберите текстовый файл из списка и нажмите кнопку «Открыть». В Firebug на панели часов установлены часы для str.value. Посмотрите на файл ... Он должен быть усечен, если только он не очень короткий.
Для справки, приведенный выше код является основной частью функции openFile () в trunk / scripts / file_io.js.
Кто-нибудь знает, что с этим происходит?