C#的文件操作主要涉及到File, FileStream, StreamReader,StreamWriter这几个类
File主要用于处理小文件,FileStream处理大文件
File类主要用法
File的名字空间是System.IO,
封装了创建,打开,移动,删除,判断是否存在等
读文件的三种方法
方法1 按字节读
byte[] buffer = File.ReadAllBytes(@"C:\Users\One\Desktop\诗歌.txt");
string str = Encoding.GetEncoding("UTF-8").GetString(buffer);
Console.WriteLine(str);
方法2 逐行读
string[] strs = File.ReadAllLines(@"C:\Users\One\Desktop\诗歌.txt", Encoding.Default);
foreach (var str in strs)
{
Console.WriteLine(str);
}
方法3 读文本
string text = File.ReadAllText(@"C:\Users\One\Desktop\诗歌.txt", Encoding.Default);
Console.WriteLine(text);
FileStream的用法
File适合处理小文件,大文件得用FileStream类,FileStream主要处理字节,例如可以使用FileStream进行文件拷贝
using System;
using System.IO;
namespace MediaCopy
{
class Program
{
static void Main(string[] args)
{
string path1 = @"C:\Users\One\Desktop\01.rmvb";
string path2 = @"C:\Users\One\Desktop\02.rmvb";
CopyMedia(path1, path2);
Console.WriteLine("拷贝成功");
Console.ReadKey();
}
public static void CopyMedia(string path1, string path2)
{
using (FileStream fsRead = new FileStream(path1, FileMode.Open, FileAccess.Read))
{
using (FileStream fsWrite = new FileStream(path2, FileMode.OpenOrCreate, FileAccess.Write))
{
byte[] buffer = new byte[1024 * 1024 * 5]; //每次拷贝5M
while (true)
{
int size = fsRead.Read(buffer, 0, buffer.Length);
if (size == 0)
{
break;
}
fsWrite.Write(buffer, 0, size);
}
}
}
}
}
}
StreamReader 以流的方式读文件
public static void StreamReader_Test()
{
using (StreamReader fReader = new StreamReader(@"C:\Users\One\Desktop\诗歌.txt", Encoding.Default))
{
while(!fReader.EndOfStream)
{
string str = fReader.ReadLine();
Console.WriteLine(str);
}
}
}
StreamWriter 以流的 方式写文件
public static void StreamWriter_Test()
{
//以追加的形式写入文件
using (StreamWriter sw = new StreamWriter(@"C:\Users\One\Desktop\诗歌2.txt", true))
{
sw.Write("驱蚊器二无群二二群二群翁");
}
}