浅析文本文件的基本操作
作者: XGP
.Net对文件的操作是以I/O流的方式进行的,因此在介绍.NET的文件操作之前,我们先来简单地了解一下流的概念。
流(stream)是一个字节序列。一个流代表着输入或者输出到一个数据源的数据流动,对于流的操作是按照流中字节流动的先后顺序进行的。按照数据的流动方向可以将流分为两大类:输入流和输出流。从输入设备到计算机的流一般称为输入;相反,从计算机到输出设备的流一般称为输出流。比如说,从键盘输入到内存的流就是输入流,从内存到显示器的流就是输出流。对应与我们的文件读写操作,从文件输出数据的流就是输出流,把数据写入到文件的流就是输入流。
.Net框架主要为我们提供了一个System.IO命名空间,该命名空间基本包含了所有和I/O操作相关的类。 本文真对文本文件的读写、创建、删除、复制和移动等操作做一个简单的介绍。
一、查找某个目录下的文件信息:
System.IO命名空间下的DirectoryInfo 类提供了处理与路径有关的方法,比如建立、复制、移动、以及删除。下面的代码查找"E:/testDir"目录下的所有文件,并输出所有文件名:
DirectoryInfo dirInfor = new DirectoryInfo(@"E:/testDir");
//取得指定目录中的文件的名称
FileInfo[] files = dirInfor.GetFiles();
//文件的数量
int filesTotal = files.Length;
Console.WriteLine("Total number of bmp files", filesTotal);
for(int i=0; i<filesTotal; i++)
{
FileInfo file = files[i];
//输出文件名
Console.WriteLine("Name is : {0}", file.Name);
//输出文件的长度
Console.WriteLine("Length of the file is : {0}", file.Length);
}
二、文本文件的读写
在System.IO命名空间下有许多对文件进行读写操作类,其中StreamReader类和StreamWriter类是最基本也是最常用的。当建立了StreamReader(或者StreamWriter)对象后,一个读取(或写入)文件的流也就被建立了, 在这里我们不必去关心这个流的建立过程,只要使用StreamReader(StreamWriter)的方法,通过建立起来的流来读取(或写入)文件中的数据就行了。
通常我们是使用File类的OpenText方法来获取一个StreamReader对象,通过该对象我们可以实现对文本文件的读操作;使用File类的CreateText来获取一个StreamWriter对象,通过该对象我们可以实现对文本文件的写操作。
得到读取流对象后,就可使用该对象的ReadLine方法对文件进行读写了,ReadLine方法是从当前流中读取一行字符并将数据作为一个字符串返回。得到写入流后,就可以使用该对象的WriteLine方法将字符串逐行写入文件。
在对文件进行读写结束后,使用流对象的Close()方法把流关闭。下面的代码显示了如何读取一个文本文件。
string lineText = null;
StreamReader sr = File.OpenText(@"E:/testDir/testFile.txt");
while ((lineText = sr.ReadLine()) != null)
{
Console.WriteLine(lineText);
}
sr.Close();
下面的代码显示了如何把一个字符串写入到文本文件。
StreamWriter sw = File.CreateText(@"E:/testDir/newFile.txt");
sw.WriteLine("Hello, PLMM");
sw.Close();
三、文件的创建与删除
新建一个文件可以使用File类的Create方法,也可以使用FileInfo类的Create方法。下面的代码显示了如何创建一个文本文件,然后访问其创建时间、文件的绝对路径等文件信息。
FileInfo fi = new FileInfo(@"E:/testDir/newFile.txt");
fi.Create();
Console.WriteLine("Creation Time: {0}",fi.CreationTime);
Console.WriteLine("Full Name: {0}",fi.FullName);
删除文件可以使用File类的Delete方法,也可以使用FileInfo类的Delete方法。
File.Delete(@"E:/testDir/newFile.txt");
四、文件的复制与移动
复制文件可以使用File类的copy方法,也可以使用FileInfo类的CopyTo方法。下面的代码使用File类的copy方法来拷贝oldFile.txt文件。
string fromFileName = "E://testDir//from//oldFile.txt";
string destFileName = "E://testDir//dest//newFile.txt";
File.Copy(fromFileName,destFileName,true);
移动文件可以使用File类的Move方法,也可以使用FileInfo类的MoveTo方法。下面的代码使用File类的Move方法把"E:/testDir/from/目录下的texFile.txt文件移动到"E:/testDir/dest目录下。
string fromFileName = "E://testDir//from//testFile.txt";
string destFileName = "E://testDir//dest//testFile.txt";
File.Move(fromFileName,destFileName);
五、 总结:
本文只是简要地介绍了C#文件操作的基本知识和方法,通过本文我们可以对System.IO命名空间中的诸如DirectoryInfo类、StreamReader类以及StreamWriter类、FileInfo等类有了一定得有基本了解。希望本文对.NET的初学者能有所帮助。