通常读写问文件的方法的方法有两种,一种主要是利用FileStream的读写直接读写文件,一种是利用StreamReader和StreamWriter这两个流操作类来读写文件。
1.通过FileStream读写文件
(1)File类,用来创建文件流FileStream对象
自定义打开文件的方式:File.Open(String fileName,FileMode);
如FileStreamfs=File.Open("C:\\log.txt",FileMode.Append);
打开文件进行读取:File.OpenRead(String fileName);如FileStreamfs=File.OpenRead("C:\\log.txt");
打开文件进行写入:File.OpenWrite(String fileName);如FileStreamfs=File.OpenWrite("C:\\log.txt");
(2)FileStream类,创建和操作文件流FileStream对象
File类的构造方法有如下几种形式:
FileStream fs=new FileStream(String 文件路径,FileMode 文件打开模式);
FileStream fs=new FileStream(String ,FileMode,FileAccess文件访问方式);
FileStream fs=newFileStream(String,FileMode,FileAccess,FileShare 文件共享方式);
FileMode一共包括6种枚举,告诉操作系统以何种方式打开文件:
Append:打开现有文件,准备向文件追加数据,只能同FileAccess.Write一起使用;
Create:指示操作系统创建新文件,如果文件已经存在则覆盖;
CreateNew:指示操作系统创建新文件,如果文件已经存在则引发异常;
Open:打开现有文件,打开文件的能力取决于FileAccess所指定的值;
OpenOrCreate:打开文件,如果文件不存在则创建新文件;
Truncate:打开现有文件,并且清除文件的内容
FileAccess一共包括3个枚举项:
Read:对文件读访问;ReadWrite:对文件读或写访问;Write:对文件写操作;
FileShare一共包括4个枚举项:
None:谢绝共享当前文件;
Read:允许别的程序读取当前文件;
ReadWrite:允许别的程序读写当前文件;
Write:允许别的程序写当前文件;
用FileStream对于文件的操作基本上要经过三个步骤:
a 创建文件读写流对象
b 写或读操作
c 关闭文件流
举例1:
using(FileStreamfs=File.Open("C:\\log.txt",FileMode.Append))
{
byte[] buffer=System.Text.Encoding.Default.GetBytes("HelloWorld!");
fs.Write(buffer,0,buffer.Length);
fs.Close
}
举例2:
using(FileStream fs=newFileStream("C:\\log.txt",FileMode.Open,FileAccess.Read))
{
byte[] buffer=new byte[fs.Length];
fs.Read(buffer,0,buffer.Length);
fs.Close();
}
2.通过流读写器读写文件
文件流对象操作的是最底层的字节级数据,可以读取任何文件;而流读写器用来读写文本文件,它从底层封装了文件流,提供更便捷的读写方式,无需编解码操作(它默认使用UTF8编解码方式)。
(1)StreamReader类,用来读取文件
构造方法:
new StreamReader(Stream 读取的文件流);
如StreamReader sr=newStreamReader(File.OpenRead("C:\\log.txt"));
new StreamReader(Stream 读取的文件流,Encoding 解码方式);
new StreamReader(String 读取的文件);如StreamReader sr=newStreamReader("C:\\log.txt");
File.OpenText(String 读取的文件);如StreamReadersr=File.OpenText(C:\\log.txt);
读方法
public string ReadLine();
public override string ReadToEnd();
(2)StreamWriter类,用来写入文件
构造方法:
StreamWriter(Stream 操作的文件流对象);
如StreamWritersw=new StreamWriter(File.OpenWrite("C:\\log.txt"));
StreamWriter(String 写入的文件);如StreamWriter sw=newStreamWriter("C:\\log.txt");
StreamWriter(String 写入的文件,Boolean 是否追加);
如StreamWriter sw=new StreamWriter("C:\\log.txt",false);
StreamWriter(String 写入的文件,Encoding 编码方式);
File.AppendText(String 文件名)以及File.CreateText(String 文件名)
如StreamWritersw=File.CreateText("C:\\log.txt");
写方法
public void WriteLine(Char);
public void WriteLine(Double);
public void WriteLine(String);
举例1:
using(StreamReader sr=new StreamReader("C:\\log.txt"))
{
String ss=sr.ReadToEnd();
sr.Close();
}
举例2:
using(StreamWriter sw=new StreamWriter("C:\\log.txt"))
{
sw.WriteLine("Hello World!");
sw.Close();
}