使用FS从数组创建文本文件

时间:2018-06-07 19:05:52

标签: javascript node.js fs

我创建了一个字符串数组,并将它们放入一个名为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, "");

此处没有错误,但输出是未定义的对象:

enter image description here

尝试#3只是尝试一个文本字符串而不是使用我的数组中的值。这完全符合预期。

var schoolTextFile = chatDir + "/" + "some Text 1234" + ".txt";
fs.writeFileSync(schoolTextFile, "");

enter image description here

因此,该问题被确定为将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.

那么,为什么一个字符串在这里起作用,另一个字符串导致路径问题?提前谢谢!

1 个答案:

答案 0 :(得分:0)

你必须在schoolArray中有一些禁用的字符。通常是\r。尝试

schoolArray = fileInput.split("\n").map( line => line.replace(/\r/g,''));