创建文件没生效,怎么破?

来源:8-5 在 App 中集成文件操作

慕盖茨505866

2021-01-25

老师,本视频6:40s,创建文件失败。单独的fileHelper.js创建文件测试是OK的,但是【在App.js中调用就不生效了】但的确走了promise的resolve。
【fileHelper.js】
const fs = window.require(‘fs’).promises
const path = window.require(‘path’)

const fileHelper = {
readFile: (path) => {
return fs.readFile(path, { encoding: ‘utf8’ })
},
writeFile: (path, content) => {
return fs.writeFile(path, content, { encoding: ‘utf8’ })
},
renameFile: (path, newPath) => {
return fs.rename(path, newPath)
},
deleteFile: (path) => {
return fs.unlink(path)
}
}
export default fileHelper
【App.js】
import fileHelper from './utils/fileHelper’
const { remote } = window.require(‘electron’)
const { join } = window.require(‘path’)
const savedLocation = remote.app.getPath(‘documents’)
// 更新文件名的功能
const updateFileName = (id, title, isNew) => {
// 修改前的代码
// const newFiles = files.map(file => {
// if(file.id === id){
// file.title = title
// file.isNew = false
// }
// return file
// })
// setFiles(newFiles)

// 修改后的代码
const modifiedFile = {...files[id], title, isNew: false}
// 如果是新建文件需要【首次命名】
if(isNew){
  // 那么保存新建的文件到savedLocation所指定的路径(即documents)
  fileHelper.writeFile(join(savedLocation, `${title}.md`), 
    files[id].body).then((res) => {
      setFiles({...files, [id]: modifiedFile})
      console.log("?????????执行了!") // 可以执行
      console.log(res) // undefined  这里为什么是undefined?
    }).catch(err => {
      console.log("??????????异常了!")
    })
}else{ //否则如果是已经存在的文件需要【重命名】
  fileHelper.renameFile(join(savedLocation, `${files[id].title}.md`),
    join(savedLocation, `${title}.md`)
).then(() => {
  setFiles({...files, [id]: modifiedFile})
})
}

}

【FileList.js】文件中
useEffect(() => {
const newFile = files.find(file => file.isNew)
console.log(newFile) //undefined ???
if(newFile){
setEditStatus(newFile.id)
setValue(newFile.title)
}
// 当files有所变化的时候运行该useEffect
}, [files])

新建文件的时候有文件创建,但是命名后回车,文件就没有了???
图片描述

写回答

1回答

慕盖茨505866

提问者

2021-01-25

纠结了几个小时,发现文件确实创建了,其实Mac下有两个documents路径,一个是在/var/root/Documents,一个是/Users/mac/Documents,代码中的文件被创建到了/var/root/Documents中了,但是【老师】能不能任意把生成的文件创建到我想要的任何地方呢?比如像把文件创建到/Users/mac/Documents路径的文件夹中去,该怎么写代码呢?还有就是如上的问题中,打印的时候,它还是打印的undefined,这个还没想明白是怎么回事???


0
0

2024更新 Electron+React+七牛云实战跨平台桌面应用

开发一款自动云同步的 Markdown 文件管理软件

1251 学习 · 463 问题

查看课程