Electron でダイアログを開いてファイルを開く/保存
Electron でダイアログを開いてファイルを開く/保存
pify を使用してPromise化した。
const fs = require('fs')
const pify = require('pify')
const { BrowserWindow, dialog } = require('electron').remote
/**
* ダイアログで任意のファイルを開く
* @param dialogOptions
* @param fileOptions
* @returns {Promise<undefined>}
*/
export const openFileDialog = async (dialogOptions, fileOptions = 'utf8') => {
const win = BrowserWindow.getFocusedWindow()
const fileNames = await pify(
dialog.showOpenDialog(win, {
...dialogOptions,
properties: ['openFile'],
})
)
return fileNames ? readFile(fileNames[0], fileOptions) : undefined
}
/**
* ダイアログで任意のファイル保存
* TODO: openFileDialog と同様に pify を使用して Promise化して実行結果を返したい。
* @param data
* @param options
*/
export const saveFileDialog = (data, options = {}) => {
const win = BrowserWindow.getFocusedWindow()
dialog.showSaveDialog(win, options, fileName => {
writeFile(fileName, data)
})
}
/**
* 指定したファイルを読み込む
* @param path
* @param option
* @returns {Buffer}
*/
export const readFile = (path, option) => {
return fs.readFileSync(path, option)
}
/**
* fileを保存(Pathと内容を指定)
* @param path
* @param data
*/
export const writeFile = (path, data) => {
return fs.writeFileSync(path, data)
}
pify を使用してPromise化した。
const fs = require('fs')
const pify = require('pify')
const { BrowserWindow, dialog } = require('electron').remote
/**
* ダイアログで任意のファイルを開く
* @param dialogOptions
* @param fileOptions
* @returns {Promise<undefined>}
*/
export const openFileDialog = async (dialogOptions, fileOptions = 'utf8') => {
const win = BrowserWindow.getFocusedWindow()
const fileNames = await pify(
dialog.showOpenDialog(win, {
...dialogOptions,
properties: ['openFile'],
})
)
return fileNames ? readFile(fileNames[0], fileOptions) : undefined
}
/**
* ダイアログで任意のファイル保存
* TODO: openFileDialog と同様に pify を使用して Promise化して実行結果を返したい。
* @param data
* @param options
*/
export const saveFileDialog = (data, options = {}) => {
const win = BrowserWindow.getFocusedWindow()
dialog.showSaveDialog(win, options, fileName => {
writeFile(fileName, data)
})
}
/**
* 指定したファイルを読み込む
* @param path
* @param option
* @returns {Buffer}
*/
export const readFile = (path, option) => {
return fs.readFileSync(path, option)
}
/**
* fileを保存(Pathと内容を指定)
* @param path
* @param data
*/
export const writeFile = (path, data) => {
return fs.writeFileSync(path, data)
}
Author And Source
この問題について(Electron でダイアログを開いてファイルを開く/保存), 我々は、より多くの情報をここで見つけました https://qiita.com/kiyomizu/items/57d581eba393b523e6c6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .