Electron-读写本地文件

Electron本地文件

前言

做本地应用程序的时候经常需要用到nodeJS来保存数据
这时候就涉及到了主进程和渲染进程的数据传递了

Electron读写本地文件其实和nodeJs差不多,只是中间加了一层API
废话不多说直接上内容

读取文件

  1. 首先按需导入ipcMain模块

  2. 注册事件(注意:ipcMain里on注册事件的名字可以自定义),调用时跟渲染进程的调用的名称一样即可

  3. 渲染进程向主线程发送请求时也必须回应,不然数据请求不过来

主进程代码:

// 主进程
import { app, BrowserWindow, Menu,ipcMain } from 'electron';
ipcMain.on('asynchronous-message', function(event, arg) {
   // arg是从渲染进程返回来的数据
  console.log(arg);
  
  // 这里是传给渲染进程的数据
  fs.readFile(path.join(__dirname,"../renderer/data/data.json"),"utf8",(err,data)=>{
  	if(err){
		event.sender.send('asynchronous-reply', "读取失败");
	}else{
		event.sender.send('asynchronous-reply', data);
	}
    
  })
});

渲染进程代码

// 渲染进程
const ipcRenderer = require("electron").ipcRenderer;

// 这里是接收主进程传递过来的参数,这里的on要对应主进程send过来的名字
ipcRenderer.on("asynchronous-reply", function(event, arg) {
// 这里的arg是从主线程请求的数据
  	console.log("render+" + arg);
});

// 这里的会传递回给主进程,这里的第一个参数需要对应着主进程里on注册事件的名字一致
ipcRenderer.send("asynchronous-message", "传递回去ping");

写入文件

写入文件其实跟读文件是一样的

主进程代码:

// 主进程
import { app, BrowserWindow, Menu,ipcMain } from 'electron';
ipcMain.on('asynchronous-message', function(event, arg) {
  // arg是从渲染进程返回来的数据
fs.writeFile(path.join(__dirname, "../renderer/data/data.json"),JSON.stringify(arg), "utf8"(err)=>{
	if(err){
	 	event.sender.send('asynchronous-reply', "写入失败");
	}else {
		event.sender.send('asynchronous-reply', "写入成功");
	}
})
  
  	// 通过event.sender.send给渲染进程传递数据
   

});

渲染进程代码

// 渲染进程
const ipcRenderer = require("electron").ipcRenderer;

// 这里是接收主进程传递过来的参数,这里的on要对应主进程send过来的名字
ipcRenderer.on("asynchronous-reply", function(event, arg) {
	// 这里的arg是从主线程请求的数据
  	console.log("render+" + arg); 
});

// 这里的会传递回给主进程,这里的第一个参数需要对应着主进程里on注册事件的名字一致
ipcRenderer.send("asynchronous-message", "传递回去ping");

你可能感兴趣的:(Electron-读写本地文件)