web-dev-qa-db-fra.com

Fonction Electron pour lire un fichier local - FS - Pas de lecture

J'ai un projet d'électrons lorsque j'ai besoin d'obtenir des électrons pour lire un fichier local.

En ce moment, ce que j'ai, c'est où il se charge et affiche le contenu d'un fichier html.

J'en ai juste besoin pour lire un fichier et le stocker sur une variable pour l'instant.

Voici mon main.js actuel:

 const {app, BrowserWindow } = require('electron');
const path = require('path');
const url = require('url');
var fs = require('fs');

let mainWindow;

function createNewWindow() {
  mainWindow = new BrowserWindow({
    width: 1300,
    height: 1000,
    minWidth: 600,
    minHeight: 400,
    title: 'Test App'
  })
}

function loadInitialUrl() {
  mainWindow.loadURL(url.format({
    pathname: path.join(__dirname, 'index.html'),
    protocol: 'file:',
    slashes: true
  }))
}

function closeApplication() {
  mainWindow.on('closed', () => {
    mainWindow = null;
})
}


app.on('ready', function(){
  createNewWindow();
  loadInitialUrl();
  mainWindow.setMenu(null);
  mainWindow.openDevTools();
  fs.readFile('./README.md', 'utf8', function (err,data) {
    if (err) {
      return console.log(err);
    }
    console.log(data);
  });
  mainWindow.on('closed', function() {mainWindow = null;});
});

Comment puis-je faire cela car il n'affiche pas le contenu du fichier README.md dans le console.log

6
JakeBrown777

Fondamentalement, vous devez faire les choses suivantes.

1.Chargement des dépendances requises

var remote = require('remote'); // Load remote compnent that contains the dialog dependency
var dialog = remote.require('dialog'); // Load the dialogs component of the OS
var fs = require('fs'); // Load the File System to execute our common tasks (CRUD)

2.Lisez le contenu du fichier

dialog.showOpenDialog((fileNames) => {
    // fileNames is an array that contains all the selected
    if(fileNames === undefined){
        console.log("No file selected");
        return;
    }

    fs.readFile(filepath, 'utf-8', (err, data) => {
        if(err){
            alert("An error ocurred reading the file :" + err.message);
            return;
        }

        // Change how to handle the file content
        console.log("The file content is : " + data);
    });
});

3.Mettez à jour le contenu du fichier existant

 var filepath = "C:/Previous-filepath/existinfile.txt";// you need to save the filepath when you open the file to update without use the filechooser dialog againg
var content = "This is the new content of the file";

fs.writeFile(filepath, content, (err) => {
    if (err) {
        alert("An error ocurred updating the file" + err.message);
        console.log(err);
        return;
    }

    alert("The file has been succesfully saved");
});

Pour plus de lecture, veuillez visiter ici :) Merci ..

Une dernière chose à ajouter .. Veuillez vérifier que votre chemin d'accès au fichier est correct. Vous pouvez faire quelque chose de similaire à ci-dessous.

var path = require('path');
var p = path.join(__dirname, '.', 'README.md');
10
Ninjaneer

Une seule information de mise à jour pour la réponse acceptée. Après la mise à jour de l'électron, vous pouvez directement utiliser

const { dialog } = require('electron');

pour importer la boîte de dialogue.

Et pour la télécommande, si vous devez l'utiliser, vous avez également besoin de:

const { remote } = require('electron');
0
zhuzilin