Интернет, компьютеры, софт и прочий Hi-Tech | ||
Избранные докиМетки (все метки)hi tech, internet, it, интернет, информационные технологии, ит, по, программное обеспечение, сайт, софт
Подписаться через RSS2Email.ru
Дополнительнооптимизация, сайт, мониторы, движок, Битрикс, хостинг, сайты, мобильные, электроника, видеокарта |
Ввод и вывод из файла средствами XPCOMСодержание
Запись в файл// 'file' должен быть 'nsIFile', 'data' должно быть строкой
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].
createInstance(Components.interfaces.nsIFileOutputStream);
// используйте '0x02 | 0x10', чтобы открыть файл для дозаписи.
foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);
// записать, создать, очистить
// В языке C для операций с файлом мы должны открыть его в определенном режиме,
// которые обычно обозначаются как "r" или "w".
// Если вы уверены, что никогда не будете иметь дело с не-ASCII данными
// (нетекстовыми), вы можете непосредственно обращаться к 'foStream.writeData'.
var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].
createInstance(Components.interfaces.nsIConverterOutputStream);
converter.init(foStream, "UTF-8", 0, 0);
converter.writeString(data);
converter.close(); // закрываем 'foStream'
ЗАМЕЧАНИЕ: флаги статусов файла, используемые в функции Запись бинарного файлаВот как записывать, например, PNG-данные в файл: // 'pngBinary' уже существует
var aFile = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
aFile.initWithPath( "/tmp/mypicture.png" );
aFile.createUnique( Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 600);
var stream = Components.classes["@mozilla.org/network/safe-file-output-stream;1"].
createInstance(Components.interfaces.nsIFileOutputStream);
// чтение/запись, создание, очистка
stream.init(aFile, 0x04 | 0x08 | 0x20, 0600, 0);
stream.write(pngBinary, pngBinary.length);
if (stream instanceof Components.interfaces.nsISafeOutputStream) {
stream.finish();
} else {
stream.close();
}
Копирование потока в файлСледующая функция возвращает простого слушателя потока, который копирует все данные из потока ввода в файл. В качестве аргумента она принимает 'nsIFile', который будет открыт или создан. Вам следует переопределить функции 'onStartRequest' и 'onStopRequest' в зависимости от того, что вы хотите делать, соответственно, при создании файла и его закрытии. function StreamToFile(file)
{
var output = Components.classes["@mozilla.org/network/file-output-stream;1"].
createInstance(Components.interfaces.nsIFileOutputStream);
var buffer = Components.classes["@mozilla.org/network/buffered-output-stream;1"].
createInstance(Components.interfaces.nsIBufferedOutputStream);
output.init(file, 0x02 | 0x08 | 0x20, 0664, null);
buffer.init(output, 8192);
return {
onStartRequest: function(request, context) { },
onDataAvailable: function onDataAvailable(request, context, stream, offset, count)
{
while(count > 0)
count -= buffer.writeFrom(stream, count);
},
onStopRequest: function(request, context) { }
};
}
ДополнительноЧтобы больше узнать о методах и свойствах интерфейсов ' Назад: Навигация с помощью 'nsIFile' Перевод с английского: Д.Скоробогатов, 24.09.2010. Предыдущие публикации:
Последнее редактирование: 2010-10-15 11:17:23 Метки материала: com, программа, файл, mozilla, скрипты, браузер, программы для компьютера, программирование, javascript, ит, разработка программ, файловая система, xpcom, xulrunner, api, по, программное обеспечение, программы, софт, информационные технологии Оставьте, пожалуйста, свой комментарий к публикации |
|
© 2007-2012, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.