使用 FS 从数组创建文本文件
Creating text files from array, using FS
我创建了一个字符串数组并将它们放入一个名为 schoolsArray 的数组中。我希望能够使用 fs 为每所学校创建一个文本文件。
出于某种原因,我无法让它工作。问题似乎在于使用 schoolsArray[0] 中的值作为路径名中的字符串。请看看我的一系列测试。第一个代码片段一切正常,但我添加它只是为了帮助您理解我首先导入 'fs' 并创建一个目录。
更新 - 添加了每个请求的 schoolArray 创建
var fs = require('fs');
// Read all schools into array (read from text file)
const schoolFile = "./assets/dispatch/state/schools/county_name.txt";
fileInput = fs.readFileSync(schoolFile, "utf-8");
const schoolArray = fileInput.split("\n");
// Variable for chat logs directory
const chatDir = "./chat-logs";
// Create directory if it doesn't exist
if(!fs.existsSync(chatDir)){
fs.mkdirSync(chatDir);
}
目录已创建,现在尝试创建一个文件尝试#1
var schoolTextFile = chatDir + "/" + schoolArray[0] + ".txt";
fs.writeFileSync(schoolTextFile, "");
Uncaught Error: ENOENT: no such file or directory, open 'C:\Users\PC\Desktop\Node_Webkit_Test\chat-logs\Test School Name.txt'
at Object.fs.openSync (fs.js:653:18)
at Object.fs.writeFileSync (fs.js:1300:33)
好的,但由于某些原因这不起作用。尝试 #2 - 我开始认为 schoolArray[0] 值没有被读取为字符串,所以我尝试了这个:
var schoolTextFile = chatDir + "/" + toString(schoolArray[0]) + ".txt";
fs.writeFileSync(schoolTextFile, "");
这里没有错误,但是输出的是一个未定义的对象:
尝试 #3 只是简单地尝试一个文本字符串,而不是使用我的数组中的值。这完全符合预期。
var schoolTextFile = chatDir + "/" + "some Text 1234" + ".txt";
fs.writeFileSync(schoolTextFile, "");
因此,问题被确定为与路径中输入的 schoolArray[0] 值有关。甚至测试都显得很愚蠢,但我还是这样做了...
var somestring = "some text 1234";
console.log(typeof somestring);
// The log says that this is a string.
console.log(typeof schoolArray[0]);
// The log says that this is a string.
那么,为什么一个字符串在这里工作,另一个导致路径问题?提前致谢!
你肯定在 schoolArray 中有一些禁止使用的字符。通常 \r
。尝试
schoolArray = fileInput.split("\n").map( line => line.replace(/\r/g,''));
我创建了一个字符串数组并将它们放入一个名为 schoolsArray 的数组中。我希望能够使用 fs 为每所学校创建一个文本文件。
出于某种原因,我无法让它工作。问题似乎在于使用 schoolsArray[0] 中的值作为路径名中的字符串。请看看我的一系列测试。第一个代码片段一切正常,但我添加它只是为了帮助您理解我首先导入 'fs' 并创建一个目录。
更新 - 添加了每个请求的 schoolArray 创建
var fs = require('fs');
// Read all schools into array (read from text file)
const schoolFile = "./assets/dispatch/state/schools/county_name.txt";
fileInput = fs.readFileSync(schoolFile, "utf-8");
const schoolArray = fileInput.split("\n");
// Variable for chat logs directory
const chatDir = "./chat-logs";
// Create directory if it doesn't exist
if(!fs.existsSync(chatDir)){
fs.mkdirSync(chatDir);
}
目录已创建,现在尝试创建一个文件尝试#1
var schoolTextFile = chatDir + "/" + schoolArray[0] + ".txt";
fs.writeFileSync(schoolTextFile, "");
Uncaught Error: ENOENT: no such file or directory, open 'C:\Users\PC\Desktop\Node_Webkit_Test\chat-logs\Test School Name.txt'
at Object.fs.openSync (fs.js:653:18)
at Object.fs.writeFileSync (fs.js:1300:33)
好的,但由于某些原因这不起作用。尝试 #2 - 我开始认为 schoolArray[0] 值没有被读取为字符串,所以我尝试了这个:
var schoolTextFile = chatDir + "/" + toString(schoolArray[0]) + ".txt";
fs.writeFileSync(schoolTextFile, "");
这里没有错误,但是输出的是一个未定义的对象:
尝试 #3 只是简单地尝试一个文本字符串,而不是使用我的数组中的值。这完全符合预期。
var schoolTextFile = chatDir + "/" + "some Text 1234" + ".txt";
fs.writeFileSync(schoolTextFile, "");
因此,问题被确定为与路径中输入的 schoolArray[0] 值有关。甚至测试都显得很愚蠢,但我还是这样做了...
var somestring = "some text 1234";
console.log(typeof somestring);
// The log says that this is a string.
console.log(typeof schoolArray[0]);
// The log says that this is a string.
那么,为什么一个字符串在这里工作,另一个导致路径问题?提前致谢!
你肯定在 schoolArray 中有一些禁止使用的字符。通常 \r
。尝试
schoolArray = fileInput.split("\n").map( line => line.replace(/\r/g,''));