Как записать в TXT файл массив с именами файлов из папки в Javascript - PullRequest
0 голосов
/ 01 июля 2018

Я пишу в Node.js.

И в консоли я вижу имена файлов, и после этого много строк: "File written", а в файле я вижу одну строку с первым именем файла в папке

В: Как мне записать в TXT-файл массив с именами файлов из папки в Javascript?

Вот мой код:

 const WebmUrl = new URL('file:///D:/MY PROJCT/webm/hlp.txt');

 fs.readdirSync(testFolder).forEach(file => {
    console.log(file)
    fs.writeFile(WebmUrl, file, function(err){
       if(err) {
          console.log(err)  
       } else {
          console.log('File written!');
       }
    });
 })

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Или вы можете добавить флаг добавления {flag: 'as'} см. https://nodejs.org/api/fs.html#fs_file_system_flags

fs.readdirSync('../checkouts').forEach(file => {
    console.log(file)
    fs.writeFile('./test.txt', `${file}\n` , {flag: 'as'}, function (err) {
        if (err) { console.log(err) }
        else { console.log('File written!'); }
    });
})
0 голосов
/ 01 июля 2018

Когда вы используете fs.writeFile, вы заменяете файл, если он существует. Таким образом, в вашем цикле вы постоянно создаете файл из одного элемента, а затем заменяете его на следующей итерации.

Вы можете использовать fs.appendFileSync или fs.appendFile

Например:

const fs = require('fs')
fs.readdirSync(directory).forEach(file => {
    fs.appendFileSync(filename, file, function(err){
    })
})

Вы также можете просто создать массив имен файлов, объединить их в строку и записать все сразу.

const fs = require('fs')
let str = fs.readdirSync(directory).join('\n')

fs.writeFile(filename, str, function(err){
    if(err) {
    console.log(err)  
    } else {
    console.log('File written!');
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...