FS 不会创建文件
FS won't create file
我想创建一个简单的控制台应用程序,它会根据文件名比较两个文件并将结果输出到一个新文件中。
我的问题是,如果新文件不存在,NodeJS 会拒绝创建新文件,即使我手动创建它,它也会像不存在一样。
compare = (data) -> # data is being read from process.stdin
fname = "#{data}_compare.txt"
stdout.write "Attempting to compare #{data}" # stdout = process.stdout
fs.writeFileSync fname, 'A test.'
NodeJS returns Error: ENOENT, no such file or directory
在这两种情况下(当我希望它创建文件时,以及当文件已经存在时)。
我希望在与应用程序 运行 相同的文件夹中创建文件,因此路径根本不应该成为问题(并且在错误消息中确实是正确的)。
我也尝试指定 {flags: 'w'}
,但据我所知,这是默认值,所以它改变了注意。
我 运行ning 在 Windows 10,也尝试过 运行ning 在管理员下的命令提示符,仍然没有。知道是什么原因造成的吗?
确保路径存在(不一定是文件本身,而是文件夹结构),并且进程用户具有写入权限。
ENOENT 错误告诉您指定路径名的组件不存在 -- 给定路径找不到实体(文件或目录)。
确保您输入 'dot':
'./path/to/file'
data
变量是从标准输入中读取的,因此在末尾包含一个换行符。这可能是导致非描述性 ENOENT
错误的原因。
您可以使用 data = data.trim()
删除换行符(以及用户可能不小心输入的任何其他空格)
这会比 substring
解决方案更好,因为换行符仅在 Windows 上是 2 个字符,在其他地方是 1 个字符。
我想创建一个简单的控制台应用程序,它会根据文件名比较两个文件并将结果输出到一个新文件中。
我的问题是,如果新文件不存在,NodeJS 会拒绝创建新文件,即使我手动创建它,它也会像不存在一样。
compare = (data) -> # data is being read from process.stdin
fname = "#{data}_compare.txt"
stdout.write "Attempting to compare #{data}" # stdout = process.stdout
fs.writeFileSync fname, 'A test.'
NodeJS returns Error: ENOENT, no such file or directory
在这两种情况下(当我希望它创建文件时,以及当文件已经存在时)。
我希望在与应用程序 运行 相同的文件夹中创建文件,因此路径根本不应该成为问题(并且在错误消息中确实是正确的)。
我也尝试指定 {flags: 'w'}
,但据我所知,这是默认值,所以它改变了注意。
我 运行ning 在 Windows 10,也尝试过 运行ning 在管理员下的命令提示符,仍然没有。知道是什么原因造成的吗?
确保路径存在(不一定是文件本身,而是文件夹结构),并且进程用户具有写入权限。
ENOENT 错误告诉您指定路径名的组件不存在 -- 给定路径找不到实体(文件或目录)。
确保您输入 'dot':
'./path/to/file'
data
变量是从标准输入中读取的,因此在末尾包含一个换行符。这可能是导致非描述性 ENOENT
错误的原因。
您可以使用 data = data.trim()
这会比 substring
解决方案更好,因为换行符仅在 Windows 上是 2 个字符,在其他地方是 1 个字符。