إيماسو البرمجة النصية - كيفية قراءة ملف .txt محلي باستخدام JavaScript

StackOverflow https://stackoverflow.com/questions/1239650

  •  11-09-2019
  •  | 
  •  

سؤال

هناك هذا imacro. أداة البرمجة النصية، إذا كنت ترغب في أتمتة بعض زيارات صفحة الويب باستخدام JavaScript.

أود أن أحصل على JavaScript الخاص بي للقراءة من ملف .txt محلي (وليس ملف .cvs وليس منسق جيدا .. أود البحث فيه ربما مع تعبير منتظم ..) واستنادا إلى تلك القراءة، البرنامج النصي سوف تفعل بعض الوظائف في imacros .. (على سبيل المثال اتصل ببعض URL موقع الويب وغيرها ..)

هل لدى يا رفاق أي فكرة كيف يمكن القيام بذلك؟ أنا أفعل كل شيء محلي وهذا هو قراءة المتصفح المحلي من محرك الأقراص الصلبة المحلية .. يجب أن يكون من الممكن بطريقة أو بأخرى .. ولكن كيف؟

هل كانت مفيدة؟

المحلول

نعم يمكنك القيام بذلك مع Imacros، ولكن عليك الاتصال به من ملف JavaScript.js. قم بتحميل المحتوى الخاص بك ككتلة واحدة، ثم يمكنك استخدام طريقة indexof JavaScript للعثور على السلسلة في النص وأداء إذا كان العبارة. مثال النص (داخل ملف TXT الخاص بك): "Hello World!"

var load;
load =  "CODE:";
load +=  "set !extract null" + "\n"; 
load +=  "SET !DATASOURCE text.txt" + "\n"; 
load +=  "SET !DATASOURCE_COLUMNS 1" + "\n"; 
load +=  "SET !DATASOURCE_LINE 1" + "\n"; 
load +=  "SET !extract {{!col1}}" + "\n";
iimPlay(load);
var s=iimGetLastExtract(0);
var index=s.indexOf("w");
if (index>0){
do your code;
}

نصائح أخرى

يجب عليك استخدام طلب HTTP XML ككائن ActiveX للملف غير مدعوم من قبل أي متصفح آخر من IE.

يعمل هذا الرمز بشكل جيد تماما أثناء قراءة النص المحلي أو أي ملف آخر أيضا.

f();
function f()
{
    var allText =[];
    var allTextLines = [];
    var Lines = [];
    var txtFile = new XMLHttpRequest();

    txtFile.open("GET", "file://D:/test.csv", true);
    allText = txtFile.responseText;
    //allTextLines = allText.split(/\r\n|\n/);//splits ur file line by line.

    //alert(allTextLines);
    txtFile.onreadystatechange = function()
    {
        if (txtFile.readyState == 4)
        {
            // Makes sure it's found the file.
            allText = txtFile.responseText;
            allTextLines = allText.split(/\r\n|\n/);

            alert(allText);
        } else { //alert("Didn't work"); 
        }
    }
    txtFile.send(null)
}

حلها في الطريق الطراز القديم - خط القراءة حسب الخط:

function read_file(path) {
    var content = '', l = 1, f, res = '';

    do {
        content += res && (res + "\n");
        f = "CODE: "+"\n";
        f += "SET !EXTRACT null" + "\n"; 
        f += "SET !DATASOURCE \""+path+"\" "+"\n";
        f += "SET !DATASOURCE_COLUMNS 1" + "\n"; 
        f += "SET !DATASOURCE_LINE " + l + "\n"; 
        f += "SET !EXTRACT {{!col1}}" + "\n";
        iimPlay(f);
        res = iimGetLastExtract();
        l++;
    } while (res && res != '#EANF#');

    return content;
}

var file_conten = read_file('/home/user/iMacros/templates/some_file.txt');

آمل أن يساعد القراء في المستقبل ^ _ ^

في فايرفوكس يمكنك قراءة الملف مباشرة.

مزيد من المعلومات في https:/developer.mozilla.org/en-us/add-ons/code_snippets/file_i_o#line_by_line.

لقراءة خط الملف حسب الخط استخدام ما يلي

var FileUtils = Components.utils.import("resource://gre/modules/FileUtils.jsm").FileUtils;

FileLocation = "C:\\myFile.txt"

var file   = new FileUtils.File( FileLocation );

// open an input stream from file
var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
istream.init(file, 0x01, 0444, 0);
istream.QueryInterface(Components.interfaces.nsILineInputStream);

// read lines into array
var line = {}, lines = [], hasmore;
do {
  hasmore = istream.readLine(line);
  lines.push(line.value); 
} while(hasmore);

istream.close();

// do something with read data
alert(lines);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top