Как использовать XPCOM в iMacros для загрузки и записи данных - PullRequest
1 голос
/ 01 июля 2019

Это функции, которые загружают файл и записывают файл.Я использовал JavaScript и XPCOM для этих операций.Вы можете использовать эти функции в файле JavaScript iMacros.

Редактировать: Эти функции лучше всего работают в iMacros версии 8.9.7 и соответствующем Firefox.Более поздние версии аддона iMacros не поддерживают JavaScript.Также лучше использовать Firefox 47 с отключенными обновлениями.И вы можете использовать последнюю версию браузера Pale Moon с дополнением 8.9.7.Если в файле есть содержимое, функция WriteFile просто добавляет данные в новой строке.

//This function load content of the file from a location
//Example: LoadFile("C:\\test\\test.txt")

function LoadFile(path) {

    try {
        Components.utils.import("resource://gre/modules/FileUtils.jsm");

        var file = new FileUtils.File(path);

        file.initWithPath(path);
        var charset = 'UTF8';
        var fileStream = Components.classes['@mozilla.org/network/file-input-stream;1']
            .createInstance(Components.interfaces.nsIFileInputStream);
        fileStream.init(file, 1, 0, false);
        var converterStream = Components.classes['@mozilla.org/intl/converter-input-stream;1']
            .createInstance(Components.interfaces.nsIConverterInputStream);
        converterStream.init(fileStream, charset, fileStream.available(),
            converterStream.DEFAULT_REPLACEMENT_CHARACTER);
        var out = {};
        converterStream.readString(fileStream.available(), out);
        var fileContents = out.value;
        converterStream.close();
        fileStream.close();

        return fileContents;
    } catch (e) {
        alert("Error " + e + "\nPath" + path)
    }

}

//This function writes string into a file

function WriteFile(path, string) {
    try {
        //import FileUtils.jsm
        Components.utils.import("resource://gre/modules/FileUtils.jsm");
        //declare file
        var file = new FileUtils.File(path);

        //declare file path
        file.initWithPath(path);

        //if it exists move on if not create it
        if (!file.exists()) {
            file.create(file.NORMAL_FILE_TYPE, 0666);
        }

        var charset = 'UTF8';
        var fileStream = Components.classes['@mozilla.org/network/file-output-stream;1']
            .createInstance(Components.interfaces.nsIFileOutputStream);
        fileStream.init(file, 18, 0x200, false);
        var converterStream = Components
            .classes['@mozilla.org/intl/converter-output-stream;1']
            .createInstance(Components.interfaces.nsIConverterOutputStream);
        converterStream.init(fileStream, charset, string.length,
            Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);

        //write file to location
        converterStream.writeString(string + "\r\n");
        converterStream.close();
        fileStream.close();

    } catch (e) {
        alert("Error " + e + "\nPath" + path)
    }

}


//this function removes file from location
function RemoveFile(path) {

    var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
    //file.initWithPath("c:\\batstarter6_ff.cmd");
    file.initWithPath(path);

    /*
    var file = IO.newFile(path, name);

     */
    file.remove(false);

}
...