2009-08-06 6 views
2

Il existe cet outil de script IMacro, si vous voulez automatiser certaines visites de pages Web en utilisant javascript.IMacro Scripting - Comment lire un fichier .txt local à l'aide de javascript

Je voudrais avoir mon javascript pour lire un fichier txt locale (pas un fichier .csv et pas bien formaté .. Je voudrais chercher en elle probablement avec une expression régulière ..) et basé sur cette lecture, le script va faire un travail dans IMacros .. (par exemple appeler un site Web url etc ..)

Avez-vous les gars savent comment cela peut être fait? Je fais tout local et c'est mon navigateur local de lecture de mon disque dur local .. il devrait être en quelque sorte possible .. mais comment?

Répondre

3

Oui, vous pouvez le faire avec des imacros, mais vous devez l'appeler à partir du fichier javascript.js. charger votre contenu en un seul bloc, alors vous pouvez utiliser la méthode javascript indexOf pour trouver la chaîne dans le texte et effectuer une instruction if. Exemple de texte (à l'intérieur de votre fichier 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; 
} 
1

Vous devez utiliser la requête http xml en tant qu'objet ActiveX de fichier n'est pas pris en charge par un autre navigateur que IE.

Ce code fonctionne parfaitement bien lors de la lecture locale de txt ou de tout autre fichier.

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) 
} 
1

Je résolus dans l'ancienne - ligne de lecture par ligne:

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'); 

espère que ça va aider les futurs lecteurs^_^

1

dans Firefox, vous pouvez lire le fichier directement .

plus d'infos sur https://developer.mozilla.org/en-US/Add-ons/Code_snippets/File_I_O#Line_by_line

lire la ligne de fichiers en ligne, utilisez le

suivant
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); 
Questions connexes