2016-07-31 2 views
0

Я пытаюсь написать некоторый контент для каждого файла в каталоге. Моя идея - прочитать каталог и перечислить все файлы в каталоге.fs.appendfile не работает, когда в цикле foreach

Затем для каждого файла добавьте местоположение файла в текстовый файл как строку.

Например: Каталог содержит 2 файла, Sample2.content1.txt, Sample2.content2.txt.

Я хочу прочитать файл sample1.content1.txt и записать его местоположение в файле как location-c: \ sample1.txt.

Формат текста в файле

Page 0 -/text.php 
Page 1 -/60893.php 
Page 2 -/1189.php 
Page 3 -/20389.html 

Я работаю над этим, но я застрял на то, почему прикрепление файла не записывает содержимое в файл.

var fs = require('fs'); 
fs.readdir('C:/Users/Administrator/Desktop/Project/output',function(err,data) 
{ 
    if(err) throw err; 
    data.forEach(function(file){ 
     //console.log('C:/Users/Administrator/Desktop/Project/output'+file) 
     fs.appendFile('C:/Users/Administrator/Desktop/Project/output'+file,'appending this text to file','utf8',(err)=>{if(err) throw err; console.log('data was appended to '+file)}) 
    }); 
}); 

Бег это не дает мне какие-либо ошибки и console.log возвращается: данные добавляются к sample2.content1.txt данных была добавлена ​​к sample2.content2.txt

Я Вана выполнять многократные действия над файлом после добавления строки, то есть проанализировать текст в файле и преобразовать его в формат JSON и т. д.

Надеюсь, что вы можете мне помочь. Новые для JS и Node.

С уважением, Jai

+0

Это вообще плохая практика, потому что вы используете несколько асинхронных операций в цикле и ожидая, чтобы они были упорядочены в правильном порядке, но нет никакой гарантии, что они будут идти в правильном порядке , – jfriend00

+0

Любые советы о том, как подойти к этому правильному пути, будут большими. Я новичок в Node и JS, и я просто пытаюсь. – user1222256

ответ

0

Моя ошибка ... только что нашел его ...

Я смотрел в ту папку, так как данные получал дописывается в файл, как outputsample2.content1.txt, потому что я пропустил '/' after output/

поэтому она должна быть

fs.appendFile('C:/Users/Administrator/Desktop/Project/output/'+file,'appending this text to file','utf8',(err)=>{if(err) throw err; console.log('data was appended to '+file)}) 

надежда кто-то найдет это полезным.

С уважением, Jai

Смежные вопросы