J'utilise xul pour coder une extension firefox, j'ai donc besoin de lire/écrire depuis un fichier local. Comment créer par exemple le fichier "temp.txt" dans le répertoire suivant "c:/data"?Comment lire/écrire un fichier avec XUL?
Répondre
J'ai trouvé la solution pour ceux qui sont intéressés:
getLocalDirectory : function() {
let directoryService = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties);
let localDir = directoryService.get("ProfD", Ci.nsIFile);
localDir.append("FolderName");
if (!localDir.exists() || !localDir.isDirectory())
localDir.create(Ci.nsIFile.DIRECTORY_TYPE, 0774);
return localDir;
},
writeFile: function(data) {
let myFile = lbbs.files.getLocalDirectory();
myFile.append("FileName.txt");
if (myFile.exists() == false)
myFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0774);
Components.utils.import("resource://gre/modules/NetUtil.jsm");
Components.utils.import("resource://gre/modules/FileUtils.jsm");
var ostream = FileUtils.openSafeFileOutputStream(myFile)
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].
createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
var istream = converter.convertToInputStream(data);
NetUtil.asyncCopy(istream, ostream, function(status) {
if (!Components.isSuccessCode(status))
return;
});
},
readFile: function() {
let myFile = lbbs.files.getLocalDirectory();
myFile.append("FileName.txt");
if (myFile.exists() == false)
myFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0774);
var data = "";
var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
var cstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"].createInstance(Components.interfaces.nsIConverterInputStream);
fstream.init(myFile, -1, 0, 0);
cstream.init(fstream, "UTF-8", 0, 0);
let (str = {}) {
let read = 0;
do {
read = cstream.readString(0xffffffff, str);
data += str.value;
} while (read != 0);
}
cstream.close();
return data;
},
Le fichier est créé dans:% profil_utilisateur% \ AppData \ Roaming \ Mozilla \ Firefox \ Profiles \ aamu4bzq.default \ FolderName \ FileName.txt
XUL est un langage de balisage, vous l'utilisez pour créer une interface utilisateur. Pour faire des choses comme écrire dans des fichiers, vous utiliseriez XPCOM. Tout le reste se trouve dans la documentation:
- Creating an nsIFile object using FileUtils module
- Writing to a file using FileUtils and NetUtil modules
Documentation générale: FileUtils.jsm, NetUtil.jsm, File I/O code snippets
Je pense qu'il y aura problème lors de la création du dossier en dehors de l'application répertoire de base.
Par exemple: - si vous voulez créer un dossier dans C: \ TEMP, il peut échouer
Oui, vous avez raison, l'accès est uniquement limité au chemin donné. –
- 1. Comment lire un fichier dans Xul?
- 2. Importer/inclure un autre fichier XUL dans XUL
- 3. comment exécuter un fichier .exe dans l'application xul?
- 4. Comment enregistrer les erreurs de Xul dans un fichier?
- 5. Comment développer la barre d'outils avec XUL
- 6. Comment ouvrir popup en xul avec transition
- 7. Comment définir un nombre d'erreur avec xul like firebug
- 8. Comment obtenir un texte colonne listbox avec XUL
- 9. Ajouter XUL à un plugin?
- 10. Comment insérer XUL dans un document XHTML
- 11. Est-il possible d'écrire jQuery dans un fichier XUL?
- 12. XUL bug menulist avec pydom
- 13. Comment superposer xul sans ID?
- 14. styling un menulist en xul
- 15. XUL getNotificationBox
- 16. Firefox: bâtiment dynamique XUL?
- 17. Comment faire un div contentEditable dans un fichier xul (extension Firefox)?
- 18. Intégrer SVG dans XUL
- 19. OnSelect gestionnaire avec XUL et Javascript
- 20. Comment intégrer un lien dans un treillis XUL?
- 21. comment faire un appel ajax dans un environnement XUL
- 22. tabindex ne fonctionne pas avec XUL textboxes
- 23. Comment créer une fonction globale dans Xul?
- 24. FirefoxDriver - selenium et XUL
- 25. Comment utiliser progressmeter dans une application XUL?
- 26. Comment créer un tableau de bord (xul) en Javascript
- 27. Comment animer un panneau dans XUL pour Firefox Add-On
- 28. XUL: Comment modifier la position de popup
- 29. Comment forcer un arbre XUL à faire défiler du code?
- 30. Fenêtre id en xul
Merci, mais comment spécifier le chemin du fichier créé? –
@AshrafBashir: Du premier lien ci-dessus: 'var f = new FileUtils.File (" c: \\ data ");' –