在foreach循环中,fs.appendfile不起作用

时间:2016-07-31 14:59:23

标签: javascript node.js function asynchronous append

我正在尝试为目录中的每个文件写一些内容。我的想法是读取目录并列出目录中的所有文件。

然后,对于每个文件,将文件的位置作为字符串追加到文本文件中。

例如:目录包含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的新手。

此致 洁

1 个答案:

答案 0 :(得分:0)

我的错误......刚刚找到它......

由于我错过了public void Composite(Shader shader) { //Set up FBO reading/writing GL.BindFramebuffer(FramebufferTarget.DrawFramebuffer, 0); GL.BindFramebuffer(FramebufferTarget.ReadFramebuffer, gBuffer.FBO); // Bind textures GL.ActiveTexture(TextureUnit.Texture2); GL.BindTexture(TextureTarget.Texture2D, gBuffer.positionTexture); GL.ActiveTexture(TextureUnit.Texture1); GL.BindTexture(TextureTarget.Texture2D, gBuffer.normalTexture); GL.UseProgram(shader.ID); GL.Disable(EnableCap.DepthTest); GL.Viewport(0, 0, Width, Height); GL.CullFace(CullFaceMode.Back); GL.ClearColor(0.5f, 0.5f, 0.5f, 1f); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); // Uniforms Matrix4 viewMatrix = player.GetViewMatrix(); GL.UniformMatrix4(shader.viewMatrixLocation, false, ref viewMatrix); GL.Uniform3(shader.lightPositionLocation, lightPos); GL.BindTexture(TextureTarget.TextureCubeMap, cubeTex); Quad2D.drawScreenSizedQuad(); // Draw the combined lighting and diffuse to screen GL.BindTexture(TextureTarget.TextureCubeMap, 0); }

,因为数据被outputsample2.content1.txt附加到文件中,我查找错误的文件夹

所以它应该是

'/' after output/

希望有人会发现它很有用。

此致 洁