我创建了一个字符串数组,并将它们放入一个名为schoolsArray的数组中。我希望能够使用fs为每所学校创建一个文本文件。
出于某种原因,我无法让它发挥作用。似乎问题是使用来自schoolsArray [0]的值作为路径名中的字符串。请看一下我的一系列测试。这个第一个代码片段都可以使用,但我添加它只是为了帮助您了解我导入了#f;' 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.
那么,为什么一个字符串在这里起作用,另一个字符串导致路径问题?提前谢谢!
答案 0 :(得分:0)
你必须在schoolArray中有一些禁用的字符。通常是\r
。尝试
schoolArray = fileInput.split("\n").map( line => line.replace(/\r/g,''));