>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >xul: прочитать содержимое локального файла http://forum.mozilla-russia.org/viewtopic.php?id=51282 |
axe > 31-08-2011 23:19:02 |
Есть функция, внутри которой код: Выделить код Код: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 - это путь к профилю. Пробовал указывать путь к файлу с прямыми слешами - не помогает. |
hydrolizer > 01-09-2011 03:05:04 |
axe
И вот это учтите:
|
hydrolizer > 01-09-2011 11:13:21 |
Не сразу заметил: axe пишет
В этом случае корректную ссылку на файл можно получить так: Выделить код Код:Cu.import("resource://gre/modules/Services.jsm"); ................ let file=Services.dirsvc.get("ProfD", Ci.nsILocalFile);// путь к папке профиля file.append("1.txt"); // файл, лежащий непосредственно в папке профиля if(!file.exists()) return "???"; ..... |
axe > 04-09-2011 21:35:27 |
okkamas_knife пишет
действительно, с двойными слешами сработало! не ожидал, вроде бы по всякому пути писать пробовал - и не работало. на всякий случай, скопирую сюда код функции целиком (вдруг у кого-то ещё будут проблемы с чтением файлов): Выделить код Код: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")); Спасибо за помощь! |