文件读写是我的弱项,一直只是知道,却很少去用,昨天哥们问我如何给文本文件中的每一行添加内容,才开始去学习。
题目:读取给定的文本文件(Tree.dat),将解析的内容另存为另一个文本文件,要求分行增加新的Value内容(具体值不限)。
文本文件格式:
直接上代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ReadAndWriteText
{
class Program
{
static void Main(string[] args)
{
try
{
using (StreamReader sr = new StreamReader("Tree.dat", System.Text.Encoding.Default))
{
string line = "";
//随机数
Random rand1 = new Random();
if (File.Exists("NewTree.dat"))
{
Console.WriteLine("已经存在NewTree.dat,原文件会被删除,会重新创建一个新的NewTree.dat");
File.Delete("NewTree.dat");
}
int i = 1;
//读取文件直到文件结束
while ((line = sr.ReadLine()) != null)
{
//创建一个新文件。
using (StreamWriter sw = new StreamWriter("NewTree.dat",true))
{
if (i <= 1)
{
line += "\t\t Value";
}
else
{
line += "\t" + rand1.Next(100).ToString();
}
//写入文件
sw.WriteLine(line);
//输出到控制台
Console.WriteLine(line);
}
i++;
}
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
Console.WriteLine("文件已经读写成功!");
Console.ReadKey();
}
}
}
再来几张结果图
控制台:
文件的运行目录下也已经有了NewTree.dat文件
最后有两个地方需要注意的地方,第一个是文件的编码问题,如下,使用System.Text.Encoding.Default不会改变文件的原有的编码,也就不会出现乱码问题。
StreamReader sr = new StreamReader("Tree.dat", System.Text.Encoding.Default)
第二个是,是追加文件内容还是覆盖,
StreamWriter sw = new StreamWriter("NewTree.dat",true)
至此,结束。。。
程序源代码:
http://download.csdn.net/detail/gongchao1212/8953641
参考资料: MSDN 2008中文简体版