Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Ecrire dans un fichier existant a la ligne X

Envoyé par : vivelapsp

Date : 07/05/2009 12:21

EDIT : 14/05/2009 => Personne pour répondre... :( Je n'ai toujours pas trouvé la solution avec ces caractères spéciaux (voir 2eme post) mais je procede maintenant autrement (base SQL, puis génération d'un txt quand même car j'ai besoin des deux, le txt étant généré via la base SQL y'a plus aucun soucis). Donc je n'ai plus besoin de resoudre ce probleme, même si la solution m'intrigue :D

Bonjour à tous,

Je me heurte actuellement a un problème...Je souhaiterais remplacer des lignes spécifiques dans un fichier texte, mais je ne vois pas trop comment faire.

L'idée ce serait ca :

// ouvrir un flux entrant depuis le fichier
var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
istream.init(historyFile, 0x01, 0444, 0);
istream.QueryInterface(Components.interfaces.nsILineInputStream);

// ouvrir un flux sortant vers le fichier
var aStream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream);
aStream.init(historyFile, 0x02 | 0x08 | 0x10, 0777, null);

// lire les lignes dans un tableau
var line = {}, hasmore;

do {
	var chaineDeCaractereAInsérer = 'chaine';
	hasmore = istream.readLine(line);
	if(line == 'chaine de caractère a supprimer'){
		écrire a cette ligne le contenu de la variable "chaineDeCaractereAInsérer"
} while(hasmore);

istream.close();
aStream.close();

Quelqun peut il m'indiquer comment procéder ? Merci d'avance

# Re: Ecrire dans un fichier existant a la ligne X

Envoyé par : vivelapsp

Date : 07/05/2009 16:50

Bon, et bien j'ai avancé un peu sur le problème, ca marche impec' sauf quand j'ai certains caractères...enfaite je veux remplacer une chaine de caractere contenant le caractere | (pipe), mais ca ne passe pas au niveau de cette ligne de code :

var reg = new RegExp("("+website+")", "g");

Voici le code complet de la fonction :

function replace(string){

// Lis et enregistre le texte du fichier historique dans une  variable historyString
var historyString = "";
var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
var sstream =  Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
fstream.init(historyFile, -1, 0, 0);
sstream.init(fstream);

var str = sstream.read(4096);

while (str.length > 0) {
	historyString += str;
	str = sstream.read(4096);
}

sstream.close();
fstream.close();



var reg = new RegExp("("+string+")", "g");
alert('reg passé');
var aStream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream);
    	aStream.init(historyFile, 0x02 | 0x08 | 0x20, 0777, null);
var newHistoryString = historyString.replace(reg,"$1|*|1");
       aStream.write(newHistoryString, newHistoryString.length);
       aStream.close();

alert('done');

}

Et donc j'appel la fonction ici :

replace("blablablabla|*|0");

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.