C# IO流读写文件操作
1、创建文件流
2、创建文件读写器
3、执行读写操作
4、关闭文件读写器和文件流
1、创建文件流
string filePath = AppDomain.CurrentDomain.BaseDirectory + @"..\..\..\TextFile1.txt";//文件相对路径
string filePath2 = @"D:\file\TextFile2.txt";//文件绝对路径
FileStream fs =new FileStream( filePath,FileMode.OpenOrCreate,FileAccess.ReadWrite) ;
PS:“\”在C#中表示转译,所以我们在写文件路径是不能直接以这样的形式写(“D:\files”),我们可以在“”号的前面加一个@符号来取消转译,也可以用”\”来代替“\”
FileMode指定文件的打开方式
- Create:用指定的名称新建一个文件,如果文件已存在则覆盖原有的文件
- CreateNew:新建一个文件,如果文件已存在会报异常提示文件已存在
- Open:打开一个文件,使用这个枚举是文件必须已存在,否则会报异常
- OpenOrCreate:与Open成员类似,如果文件不存在则用指定的名称新建一个文件并打开它
- Appen:打开现有文件,并在末尾追加新的内容。
FileAccess文件的访问权限
- Read:可从文件读取数据的访问权限
- Write:可将数据写入文件的访问权限
- ReadWrite:可从文件读取数据和将数据写入文件的访问权限
2、创建文件读写器
创建文件写入器
//参数一:创建的文件流对象
//参数二:true表示追加,false表示覆盖
StreamWriter sw=New StreamWriter(fs,true);
常用方法:
- sw.Write():用于写入流
- sw.WriteLine():用于写入一行数据,写入某些数据后跟换行符
- sw.Close():用于关闭写入器
创建文件读取器
StreamReader sr = new StreamReader(fs,Encoding.Default);//fs:文件流对象
常用方法:
- sr.ReadLIne():读取文件流中的一行数据,并返回字符串
- sr.ReadToEnd():从当前位置读到末尾,返回字符串
- sr.Close();用于关闭读取器。
Encoding指定编码格式防止中文乱码
- Default表示获取操作系统当前的编码格式
- UTF-8表示获取UTF-8格式的编码
3、执行读写操作
try
{
String content = String.Empty;
while ((content = sr.ReadLine()) != null)//读取文件一每一行数据
{
content = content.Trim().ToString();
sw.WriteLine(content);//一行一行地写入文件二
}
}
catch
{
Console.WriteLine("读取内容到文件方法错误");
}
4、关闭文件读写器和文件流
1、关闭文件读写器和文件流一定要写在finally里面,无论是否有异常都要关闭
2、先打开的后关闭,后打开的先关闭,如果a流依赖b流,那么应该先关a流再关b流
3、当然完全可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法;如果将节点流关闭以后再关闭处理流,会抛出IO异常
finally
{
if (sw != null)//关闭文件写入器
{
sw.Close();
}
if (sr != null)//关闭文件读取器
{
sr.Close();
}
if (fs != null)//关闭文件流
{
fs.Close();
}
}