Создание текстовых файлов из массива с использованием FS - PullRequest
0 голосов
/ 07 июня 2018

Я создал массив строк и поместил их в массив 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, "");

Здесь нет ошибок, но выводнеопределенный объект:

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 голосов
/ 07 июня 2018

У вас должно быть несколько запрещенных символов в schoolArray.Обычно \r.Попробуйте

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