如何在文本文件中添加标头

如何在文本文件中添加/追加现有数据的文本开头。 基本上我需要在文本文件中提供此数据之前的标题。 此标头是动态数据。 请注意,此数据来自外部源或SQL包或来自某个地方。 因此,在文本文件中获取数据之后,我想在文本文件的现有条目/数据中提供以逗号分隔的标题文本。

我在文本文件中对数据进行采样,如下所示:

123,"SAV","CBS123",2010-10-10 00:00:00 456,"CUR","CBS456",2012-02-01 00:00:00 

要添加的标题文本:

 HDR 

输出我需要如下:TableName: Account DateTime: 2012-05-09 12:52:00

 HDRAccount2012-05-09 12:52:00 123,"SAV","CBS123",2010-10-10 00:00:00 456,"CUR","CBS456",2012-02-01 00:00:00 

请帮助我如何在VB6.0,C#.NET两种语言中获得相同的function

请注意,您无法在技术上“插入”文件并让所有内容“移位”。 你能做的最好就是读取文件并用新行重写它。 这是有效实现这一目标的一种方法:

 static void InsertHeader(string filename, string header) { var tempfile = Path.GetTempFileName(); using (var writer = new StreamWriter(tempfile)) using (var reader = new StreamReader(filename)) { writer.WriteLine(header); while (!reader.EndOfStream) writer.WriteLine(reader.ReadLine()); } File.Copy(tempfile, filename, true); File.Delete(tempfile); } 

对这个想法的答案的肯定,但改进得足以让它值得单独发布。

现在,如果您想要接受表名和日期时间的东西,只需将其添加为第二个函数:

 static void InsertTableHeader(string filename, string tableName, DateTime dateTime) { InsertHeader(filename, String.Format("HDR{0}{1:yyyy-MM-dd HH:MM:ss}", tableName, dateTime)); } 

因此,只需根据需要调用InsertHeader(filename, "Account", DateTime.Now)或类似名称。

 var fn = @"c:\temp\log.csv"; var hdr1 = "Account"; var hdr2 = "2012-05-09 12:52:00"; System.IO.File.WriteAllText(fn, System.String.Format("HDR {0} {1}\n{2}", hdr1, hdr2, System.IO.File.ReadAllText(fn))) 
 String[] headerLines = new String[]{"HDR"}; String filename = "1.txt"; var newContent = headerLines.Union(File.ReadAllLines(filename)); File.WriteAllLines(filename, newContent); 

VB6翻译衙门的答案。 空气代码! 我没有编译这个,更不用说了!

 Sub InsertHeader(ByVal filename As String, ByVal header As String) Dim tempfile As String Dim readUnit As Integer Dim writeUnit As Integer tempfile = "c:\tempfile" '' TODO generate better temporary filename - '' here is a link to help with getting path of temporary directory '' http://vb.mvps.org/samples/SysFolders readUnit = FreeFile Open filename For Input As #readUnit writeUnit = FreeFile Open tempfile For Output As #writeUnit Print #writeUnit, header Do Until Eof(readUnit) Dim nextLine As String Line Input #readUnit, nextLine Print #writeUnit, nextLine Loop Close readUnit Close writeUnit Kill filename FileCopy tempfile, filename Kill tempfile End sub 

您可以按照第一个问题的相反顺序执行此操作,意味着首先在文本文件中写入标题然后在追加模式下打开该文本文件,然后在数据中打开文件..在附加模式下打开文件使用以下代码行:

  FileStream aFile = new FileStream(filePath, FileMode.Append, FileAccess.Write); StreamWriter sw = new StreamWriter(aFile); sw.Write(text); sw.Close(); aFile.Close();