我基本上有这样的东西:
var escape = function ( x ) {
if ( ! x ) return '\\N';
return '"' + x.replace( /\r\n/g, '\n' ) + '"';
};
array.forEach( function ( item ) {
process.stdout.write( 'foo:' + [ a, b, d ].map( escape ).join( '\t' ) + '\n' );
item.child.forEach( function ( sub ) {
process.stdout.write( 'bar:' + [ e, f, g ].map( escape ).join( '\t' ) + '\n' );
} );
} );
但是,输出文件在显然随机的位置包含字符串,例如:
bar:\N "1981258" "Can't Get N^@^@^@^@^@^@^@^@^@^@Her Bones In Thefoo:"1981259" "164264"
bar:\N ^@ Left" \N \N
bar:^@^@^@ \N
这对我来说没有意义,因为程序不能打印任何内容而不将其包装成双引号。
我认为这是一个Node.js错误,由于这一行,但我只是想知道是否有解决方法。
b^@^@^@^@^@^@^@^@^@x 1 root root 1,5G 17 d\303\251c. 19:14 /D/Release.cs
答案 0 :(得分:0)
你不必逃避crlf序列。
$ node
> var crlf = '\n';
undefined
> process.stdout.write( 'foo:' + crlf + 'bar:');
foo:
bar:true
> process.stdout.write( 'foo:' + crlf + 'bar:' + crlf + '\\n' + 'foobar?');
foo:
bar:
\nfoobar?true
>
(两行末尾的“true”是REPL中process.stdout.write的返回值) 也就是说,你可以发布一个带有示例输入和更多代码的要点(我不知道a,b,d,e,f,g,......指的是什么)。
此外,根据您的输入(并查看输出),您可能更有意义使用缓冲区而不是原始字符串。
答案 1 :(得分:0)
可能是文件系统写的文件系统问题(vmhgfs)。第二个生成的文件没有这个垃圾。