我试图在网上搜索答案几个小时,但没有一个能产生我需要的结果。
目前,我打开一个.txt文件,在cmd窗口中读取内容和console.log()。我需要弄清楚如何将这些修改过的内容输出到本地主机上的html页面上。 我在本地主机地址(127.0.0.1:xxxx)创建一个服务器,并创建一个您有超文本链接的网页。我用户serverStaticFile()给它该页面的html文件将显示他们修改的.txt文件版本。
我尝试将.txt文件的修改版本保存到另一个.txt文件中,该文件将由html页面访问,但只保存原始.txt文件的最后一行。 我使用lineReader.eachline()因为我必须占用该行的某些部分并将其放入另一个字符串中,然后将这些字符串输出为该行的最终产品。
lineReader.eachLine( // For every line in the song
'original.txt',
function(line, last) {
var string1 = "";
var string2 = "";
var string3 = "";
var string4 = "";
var stringLine = line;
var skipSpaces = 0;
for (var i=0; i<stringLine.length; i++){ // For every character in the line
if (stringLine[i] == "["){
// If the character is a '[', scan the line until ']' is found.
// Everything in between is for string1
var c = "";
var x = i+1;
var chordString = "";
while (c !== "]") {
chordString += stringLine[x];
x++;
c = stringLine[x];
}
string1 += chordString;
skipSpaces = chordString.length;
i = x;
} else {
// If the character isn't a bracket, add that character to the string2
if (skipSpaces > 0){
// Pad the top line with spaces, unless they should be skipped due to a chord having been added.
skipSpaces--;
} else {
string1 += " ";
}
string2 += stringLine[i];
}
}
console.log(string1);
console.log(string2);
string3 = string1+string2;
string4 += string3;
fs.writeFile("chordpro.txt", string4, function(err) {
if(err) {
console.log(err);
} else {
console.log("");
}
});
if (last) {
return false; // stop reading
}
});
string1和string2是循环中读取的当前行的修改内容。 我将修改后的行保存为一个完整的字符串string3,并尝试将所有这些字符串放入另一个不会覆盖以前修改过的行的字符串中。这样做的问题是它只保存原始.txt文件的最后一行在modified.txt文件中。 我想将这个modified.txt文件上传到html页面,我还没知道怎么做。
有人可以给我一些指导吗?
答案 0 :(得分:0)
“chordpro.txt”文件只有正在读取的文件的最后一行的原因是因为对于输入文件中的每一行,您在完成时将该行写入输出文件。当您使用writeFile()时,它将覆盖文件中当前的任何内容。你想要做的是改用appendFile()。
fs.appendfile("chordpro.txt", string4, function(err) {
//..
}