Страницы: 1
Есть функция, внутри которой код:
var mLocalFile = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); mLocalFile.initWithPath(filepath); if(!mLocalFile.exists()) return "???";
и вызов функции:
<toolbarbutton id="helloButton" label="&helloworld;" oncommand="alert(read('D:\AXE\labuda\firefox\1.txt' ));"/>
в алерте всегда вижу '???'
D:\AXE\labuda\firefox - это путь к профилю. Пробовал указывать путь к файлу с прямыми слешами - не помогает.
Отсутствует
axe
https://developer.mozilla.org/en/Code_s … 2_files%29
Note: The path passed to initWithPath() should be in "native" form (for example "C:\\Windows"). If you need to use file:// URIs as initializers, see discussion of nsIIOService below.
И вот это учтите:
Note: initWithPath() / initWithFile() methods don't throw an exception if the specified file does not exist. An exception is thrown when methods that require the file existence are called, for example isDirectory(), moveTo(), and so on.
Отсутствует
Не сразу заметил:
D:\AXE\labuda\firefox - это путь к профилю
В этом случае корректную ссылку на файл можно получить так:
Cu.import("resource://gre/modules/Services.jsm"); ................ let file=Services.dirsvc.get("ProfD", Ci.nsILocalFile);// путь к папке профиля file.append("1.txt"); // файл, лежащий непосредственно в папке профиля if(!file.exists()) return "???"; .....
Отсутствует
попробуй двойные D:\\AXE\\labuda\\firefox\\1.txt
действительно, с двойными слешами сработало! не ожидал, вроде бы по всякому пути писать пробовал - и не работало. на всякий случай, скопирую сюда код функции целиком (вдруг у кого-то ещё будут проблемы с чтением файлов):
function read(path) { try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); } catch (e) { alert("Permission to read file was denied."); } var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath( path ); if ( file.exists() == false ) { alert("File does not exist"); } var is = Components.classes["@mozilla.org/network/file-input-stream;1"] .createInstance( Components.interfaces.nsIFileInputStream ); is.init( file,0x01, 00004, null); var sis = Components.classes["@mozilla.org/scriptableinputstream;1"] .createInstance( Components.interfaces.nsIScriptableInputStream ); sis.init( is ); return sis.read( sis.available() ); } alert(read("D:\\1.txt"));
Спасибо за помощь!
Отсутствует
Страницы: 1