简介: 我正在尝试制作一个html应用程序(.htm)来进行一些业务计算。问题是我需要保留所有内容的记录。 首先,我发现了一些用于读取/写入.mdb文件的可视化基本脚本,但这对我来说太复杂了,因为我从未使用过vbs。 所以,我决定用javascript来读/写.csv文件
这是我找到的阅读功能:
function displayClassList() {
var path="log.csv"
var fso = new ActiveXObject('Scripting.FileSystemObject'),
iStream=fso.OpenTextFile(path, 1, false);
document.getElementById("searchResults").innerHTML="";
while(!iStream.AtEndOfStream) {
var line=iStream.ReadLine();
document.getElementById("searchResults").innerHTML += line + "<br/>";
}
iStream.Close();
}
效果很好。
我遇到的问题是写作问题。我无法将文本附加到文档中的新行。这是我得到的剧本:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s = fso.CreateTextFile("./ClassList.csv", true);
s.WriteLine("helloworld");
s.Close();
}
此脚本的问题在于它用“helloworld”替换所有现有文本。我想要的是在新的一行写“helloworld”。有什么解决方案吗?
另外,有没有办法编辑特定的行,比如替换x行中的所有文本?
以下是供下载的脚本,以便您可以对其进行测试:http://ge.tt/7u5bDAV2/v/0
答案 0 :(得分:1)
如果要在不覆盖现有内容的情况下附加到文件,可以使用OpenTextFile
方法 - 请注意,您使用的CreateTextFile
方法会截断现有内容。
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s = fso.OpenTextFile("./ClassList.csv", 8);
s.WriteLine("helloworld");
s.Close();
没有简单的方法来修改文本文件的一行,除非您所做的修改使行保持相同的长度,否则如果您的更改更短,则会保留旧行的一部分,如果您的更改时间较长,则会覆盖下一行。
更重要的是,FileSystemObject不支持搜索,这是跳转到特定行所需的。
如果您想修改文件的一行,最好的办法是:
话虽如此,如果您的数据文件是HTML或XML文档而不是CSV,那么您可能会更容易,因为您可以使用DOM操作函数来读取和写入它。
答案 1 :(得分:-1)
通常,您在字符串中使用"\n"
来创建新行。它表示JS字符串中的换行符。
以下是“行”在文本文件中的工作方式。它只是一个很长的字符序列,其中一个可能的字符是换行符。无论什么程序在您查看文件时呈现文件,只需知道在其前面的任何文本下面的换行符之后显示文本。您可以拆分由换行符读取的字符串,并获得一个表示每行的数组,并以这种方式使用它。然后写你要用换行符加入那个数组并写下结果字符串。
请注意,某些程序需要"\r\n"
来表示正确的换行符,并且不会仅为"\n"
呈现新行...因此如果您是新行,请尝试"\r\n"
无法使用换行符来处理用于查看文本文件的程序。
编辑:由于您似乎不相信我,我只会用代码向您证明。我用.hta文件做了,但概念是一样的。
制作一个文本文件“myText.txt”和一个带有代码的.hta文件。文本文件包含以下内容:
This is line 1 Line 2 the third line line 4 and stuff fifth line
然后在我的代码中,我创建了这两个函数,以便于阅读和写作:
function getFile(fname)
{
var opener = new ActiveXObject("Scripting.FileSystemObject");
var pointer = opener.OpenTextFile(fname, 1, true);
var cont = pointer.ReadAll();
pointer.Close();
return cont;
}
function setFile(fname, content)
{
var opener = new ActiveXObject("Scripting.FileSystemObject");
var pointer = opener.OpenTextFile(fname, 2, true);
pointer.WriteLine(content);
pointer.Close();
}
对于我使用的程序,它使用"\r\n"
作为换行符。这就是示例将使用的内容。我只是利用拆分和连接内容字符串来编辑我选择的任何行:
var content = getFile('myFile.txt'); // read it
var lineArr = content.split('\r\n'); // now we have an array of the file's lines
lineArr[2] = 'NEW LINE CONTENT!'; // editing third line (indexed from 0)
var newContent = lineArr.join('\r\n'); // make it text again with newlines
setFile("myFile.txt", newContent); // write it
现在文本文件如下所示:
This is line 1 Line 2 NEW LINE CONTENT! line 4 and stuff fifth line
Bam。通过了解换行符在文本中的工作方式,编辑文本格式文件中的各个行。