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

时间:2012-05-09 07:30:58

标签: c# vb6

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

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

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

标题文字为Prepend:

HDR<TableName><DateTime>

输出我需要如下: TableName:帐户 日期时间: 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

两种语言中使用相同的语言

5 个答案:

答案 0 :(得分:9)

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

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);
}

this answer这个想法的信用,但改进得足以让它值得单独发布。

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

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)或类似内容。

答案 1 :(得分:2)

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)))

答案 2 :(得分:1)

String[] headerLines = new String[]{"HDR<TableName><DateTime>"};
String filename = "1.txt";
var newContent = headerLines.Union(File.ReadAllLines(filename));
File.WriteAllLines(filename, newContent);

答案 3 :(得分:-1)

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 

答案 4 :(得分:-2)

你可以按照第一个问题的相反顺序进行,意思是首先在文本文件中写入标题,然后在追加模式下打开该文本文件然后用数据打开...用于在附加模式下打开文件使用下面的代码行:

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