C#如何对文件进行读写
(一)读取文件如果你要读取的文件内容不是很多,可以使用File.ReadAllText(FilePath)或指定编码方式File.ReadAllText(FilePath,Encoding)的方法。它们都一次将文本内容全部读完,并返回一个包含全部文本内容的字符串stringstr=File.ReadAllText(@"c: empascii.txt");//也可以指定编码方式stringstr2=File.ReadAllText(@"c: empascii.txt",Encoding.ASCII);也可以使用方法File.ReadAllLines。该方法返回一个字符串数组。每一行都是一个数组元素。string[]strs=File.ReadAllLines(@"c: empascii.txt");//也可以指定编码方式string[]strs2=File.ReadAllLines(@"c: empascii.txt",Encoding.ASCII);当文本的内容比较大时,我们就不要将文本内容一次读完,而应该采用流(Stream)的方式来读取内容。.Net为我们封装了StreamReader类。初始化StreamReader类有很多种方式。下面我罗列出几种StreamReadersr1=newStreamReader(@"c: emputf-8.txt");//同样也可以指定编码方式StreamReadersr2=newStreamReader(@"c: emputf-8.txt",Encoding.UTF8);FileStreamfs=newFileStream(@"C: emputf-8.txt",FileMode.Open,FileAccess.Read,FileShare.None);StreamReadersr3=newStreamReader(fs);StreamReadersr4=newStreamReader(fs,Encoding.UTF8);FileInfomyFile=newFileInfo(@"C: emputf-8.txt");//OpenText创建一个UTF-8编码的StreamReader对象StreamReadersr5=myFile.OpenText();//OpenText创建一个UTF-8编码的StreamReader对象StreamReadersr6=File.OpenText(@"C: emputf-8.txt");初始化完成之后,你可以每次读一行,也可以每次读一个字符,还可以每次读几个字符,甚至也可以一次将所有内容读完。//读一行stringnextLine=sr.ReadLine();//读一个字符intnextChar=sr.Read();//读100个字符intnChars=100;char[]charArray=newchar[nChars];intnCharsRead=sr.Read(charArray,0,nChars);//全部读完stringrestOfStream=sr.ReadToEnd();使用完StreamReader之后,不要忘记关闭它:sr.Closee();假如我们需要一行一行的读,将整个文本文件读完,下面看一个完整的例子:StreamReadersr=File.OpenText(@"C: empascii.txt");stringnextLine;while((nextLine=sr.ReadLine())!=null){Console.WriteLine(nextLine);}sr.Close();(二)写入文件写文件和读文件一样,如果你要写入的内容不是很多,可以使用File.WriteAllText方法来一次将内容全部写如文件。如果你要将一个字符串的内容写入文件,可以用File.WriteAllText(FilePath)或指定编码方式File.WriteAllText(FilePath,Encoding)方法。stringstr1="GoodMorning!";File.WriteAllText(@"c: emp estascii.txt",str1);//也可以指定编码方式File.WriteAllText(@"c: emp estascii-2.txt",str1,Encoding.ASCII);如果你有一个字符串数组,你要将每个字符串元素都写入文件中,可以用File.WriteAllLines方法:string[]strs={"GoodMorning!","GoodAfternoon!"};File.WriteAllLines(@"c: empascii.txt",strs);File.WriteAllLines(@"c: empascii-2.txt",strs,Encoding.ASCII);使用File.WriteAllText或File.WriteAllLines方法时,如果指定的文件路径不存在,会创建一个新文件;如果文件已经存在,则会覆盖原文件。当要写入的内容比较多时,同样也要使用流(Stream)的方式写入。.Net封装的类是StreamWriter。初始化StreamWriter类同样有很多方式://如果文件不存在,创建文件;如果存在,覆盖文件StreamWritersw1=newStreamWriter(@"c: emputf-8.txt");//也可以指定编码方式//true是appendtext,false为覆盖原文件StreamWritersw2=newStreamWriter(@"c: emputf-8.txt",true,Encoding.UTF8);//FileMode.CreateNew:如果文件不存在,创建文件;如果文件已经存在,抛出异常FileStreamfs=newFileStream(@"C: emputf-8.txt",FileMode.CreateNew,FileAccess.Write,FileShare.Read);//UTF-8为默认编码StreamWritersw3=newStreamWriter(fs);StreamWritersw4=newStreamWriter(fs,Encoding.UTF8);//如果文件不存在,创建文件;如果存在,覆盖文件FileInfomyFile=newFileInfo(@"C: emputf-8.txt");StreamWritersw5=myFile.CreateText();初始化完成后,可以用StreamWriter对象一次写入一行,一个字符,一个字符数组,甚至一个字符数组的一部分。//写一个字符sw.Write('a');//写一个字符数组char[]charArray=newchar[100];//initializethesecharacterssw.Write(charArray);//写一个字符数组的一部分sw.Write(charArray,10,15);同样,StreamWriter对象使用完后,不要忘记关闭。sw.Close();最后来看一个完整的使用StreamWriter一次写入一行的例子:FileInfomyFile=newFileInfo(@"C: emputf-8.txt");StreamWritersw=myFile.CreateText();string[]strs={"早上好","下午好"};foreach(varsinstrs){sw.WriteLine(s);}sw.Close();