2016-03-03 2 views
0

То, что я пытаюсь сделать, - это чтение/запись сразу нескольким файлам. После создания файла будут изменены только данные внутри файла.Ошибка: путь должен быть строкой, NodeJS Чтение/Запись

код:

var files = fs.readdirSync(__dirname+"/") 

function readWrite(files) { 
    fs.readFile(files[i], 'utf-8', function(err, data){ 
     if (err){ 
      console.log(err) 
     } 
     fs.writeFile(files[i], 'test string', 'utf-8', function (err) { 
      if (err){ 
       console.log("completed") 
      } 
     }) 
    }) 
} 


for(i in files){ 
    readWrite(files[i]) 
} 

ошибка довольно очевидна «путь должен быть строкой», Но как я могу идти о записи на несколько файлов в одном каталоге сразу?

Я довольно новичок в узле, поэтому извините, если это похоже на вопрос о головном мозге, любая помощь будет оценена по достоинству.

ответ

0

Попробуйте заменить files[i] на files внутри вашей функции. Вы должны использовать имя своей переменной, files (и, вероятно, переименовать ее в filepath)

После этого вы действительно хотите читать и писать из одного и того же файла одновременно (это то, что делает ваш код)?

+0

Разве вы не должны читать из файла, прежде чем писать в него? Это то, о чем я думал, по крайней мере. – Furdew

1

можно передать имя файла в READWRITE функцию, так что вы не должны использовать [i]:

function readWrite(file) { 
    fs.readFile(file, 'utf-8', function(err, data) { 
     if (err) { 
      console.log(err) 
     } 
     fs.writeFile(file, 'test string', 'utf-8', function (err) { 
      if (err) { 
       console.log("completed") 
      } 
     }) 
    }) 
} 


for (i in files) { 
    readWrite(files[i]) 
}