我一直试图找到一种在使用Node.js时写入文件的方法,但没有成功.我怎样才能做到这一点?
如何在不使用第三方库的情况下下载带有Node.js的文件?
我不需要任何特别的东西.我只想从给定的URL下载文件,然后将其保存到给定的目录中.
我似乎无法获得任何解释如何执行此操作的搜索结果.
我想要做的就是能够知道给定的路径是文件还是目录(文件夹).
如果有任何API可以从绝对文件路径中检索文件名?
例如"foo.txt"来自"/var/www/foo.txt"
我知道它适用于字符串操作,fullpath.replace(/.+\//, '')
但我想知道是否有一种更"正式"的方式,就像file.getName()在java中一样,可以做到.
NodeJS从绝对路径获取文件名?
我正在尝试使用循环数据中的节点编写JSON文件,例如
let jsonFile = require('jsonfile');
for (i = 0; i < 11; i++) {
jsonFile.writeFile('loop.json', "id :" + i + " square :" + i * i);
}
Run Code Online (Sandbox Code Playgroud)
loop.json中的outPut是
id :1 square : 1
Run Code Online (Sandbox Code Playgroud)
但我想要这样的输出文件(如下),如果我再次运行该代码,它应该将新输出作为元素添加到相同的现有JSON文件中
{
"table":[
{
"Id ":1,
"square ":1
},
{
"Id ":2,
"square ":3
},
{
"Id ":3,
"square ":9
},
{
"Id ":4,
"square ":16
},
{
"Id ":5,
"square ":25
},
{
"Id ":6,
"square ":36
},
{
"Id ":7,
"square ":49
},
{ …Run Code Online (Sandbox Code Playgroud) 如果它不存在,我正在尝试创建一个完整的路径.
代码如下所示:
var fs = require('fs');
if (!fs.existsSync(newDest)) fs.mkdirSync(newDest);
Run Code Online (Sandbox Code Playgroud)
只要只有一个子目录(像'dir1'这样的newDest),这个代码就可以运行,但是当有一个类似于''dir1/dir2'的目录路径时,它会失败并显示 错误:ENOENT,没有这样的文件或目录
我希望能够根据需要使用尽可能少的代码行创建完整路径.
我读到fs上有一个递归选项,并尝试这样做
var fs = require('fs');
if (!fs.existsSync(newDest)) fs.mkdirSync(newDest,'0777', true);
Run Code Online (Sandbox Code Playgroud)
我觉得递归创建一个不存在的目录应该很简单.我是否遗漏了某些内容或是否需要解析路径并检查每个目录并创建它(如果它尚不存在)?
我是Node的新手.也许我正在使用旧版本的FS?
我想在一些文件系统操作中使用async/await.通常async/await工作正常,因为我使用babel-plugin-syntax-async-functions.
但是使用这段代码,我遇到了names未定义的if情况:
import fs from 'fs';
async function myF() {
let names;
try {
names = await fs.readdir('path/to/dir');
} catch (e) {
console.log('e', e);
}
if (names === undefined) {
console.log('undefined');
} else {
console.log('First Name', names[0]);
}
}
myF();
Run Code Online (Sandbox Code Playgroud)
当我将代码重建到回调地狱版本时,一切正常,我得到了文件名.谢谢你的提示.
我正在尝试将JSON对象写入JSON文件.代码执行没有错误,但是不是写入对象本身,所有写入JSON文件的是:
[object Object]
Run Code Online (Sandbox Code Playgroud)
这是实际写作的代码:
fs.writeFileSync('../data/phraseFreqs.json', output)
Run Code Online (Sandbox Code Playgroud)
'output'是一个JSON对象,该文件已经存在.如果需要更多信息,请告诉我.
如何关闭Node.js中的可读流?
var input = fs.createReadStream('lines.txt');
input.on('data', function(data) {
// after closing the stream, this will not
// be called again
if (gotFirstLine) {
// close this stream and continue the
// instructions from this if
console.log("Closed.");
}
});
Run Code Online (Sandbox Code Playgroud)
这将比以下更好:
input.on('data', function(data) {
if (isEnded) { return; }
if (gotFirstLine) {
isEnded = true;
console.log("Closed.");
}
});
Run Code Online (Sandbox Code Playgroud)
但这不会阻止阅读过程......
fs ×10
node.js ×10
javascript ×4
express ×2
file ×2
json ×2
path ×2
async-await ×1
directory ×1
download ×1
filesystems ×1
stream ×1