【winfrom】读写文本
//Stream 字节序列的一般视图 读取 写入 查找
// 抽象类
//TextWriter(Reader) TextReader 读取连续字符系列的读取器 StreamWriter,StringWriter StreamReader
//StreamWriter(Reader) IDispose
//using(.....) 默认编码 utf8
//FileStream 文件流 字节
//File FileInfo
//读取
private void button1_Click(object sender, EventArgs e)
{
using (StreamReader sr = new StreamReader("mytext.txt"))
{
Console.WriteLine(sr.ReadToEnd());
string line = "";
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
// //char[] buffer;
// //buffer =new char[(int)sr.BaseStream.Length];
// //sr.Read(buffer, 0, (int)sr.BaseStream.Length);
// //Console.WriteLine(new string(buffer));
}
//文本复制到另一个文件里
char[] buffer;
using (StreamReader sr = new StreamReader("mytext.txt"))
{
Encoding en = sr.CurrentEncoding;
using (StreamWriter sw = new StreamWriter("mytextto.txt"))
{
//char[] buffer;
//int count=(int)sr.BaseStream.Length;
//buffer = new char[count];
//sr.Read(buffer, 0, count);
//Task.Run(()=>sw.WriteAsync(buffer, 0, count));
Encoding enw = sw.Encoding;
buffer = new char[20];
while (true)
{
int r = sr.Read(buffer, 0, 20);
if (r == 0) break;
sw.Write(buffer, 0, 20);
}
}
}
}
//写入
{
using (TextWriter tw = new StreamWriter("mytext.txt", false))
{
tw.Write("sssssssssssss");
//tw.Flush();
tw.Write("ddddddddddd");//不换行
tw.Write(tw.NewLine);//换行符
//tw.Flush();
tw.WriteLine("cccccccccccccc");//写入,换行
tw.WriteLine("eeeeeeeeeeeee");
//Task t = tw.WriteAsync("ffffffffff");
tw.Flush();//清理缓冲区,把缓冲区的数据写入基础 设备
tw.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
//using(FileStream fs=new FileStream("mytext.txt",FileMode.Open,FileAccess.Read))
//{
// using(FileStream fs1=new FileStream("mytextto.txt",FileMode.OpenOrCreate,FileAccess.Write))//Append FileAccess.Write
// {
// byte[] buffer = new byte[1024*1024*5];
// while(true)
// {
// int r = fs.Read(buffer, 0, buffer.Length);
// if (r > 0)
// fs1.Write(buffer, 0, r);
// if (r < buffer.Length) break;
// }
// }
//}
using (FileStream fs = new FileStream("第一节DataSet与DataTable1.exe", FileMode.Open, FileAccess.Read))
{
using (FileStream fs1 = new FileStream("D:/第一节DataSet与DataTable2.exe", FileMode.OpenOrCreate, FileAccess.Write))//Append FileAccess.Write
{
byte[] buffer = new byte[1024 * 1024 * 5];
while (true)
{
int r = fs.Read(buffer, 0, buffer.Length);
if (r > 0)
fs1.Write(buffer, 0, r);
if (r < buffer.Length) break;
}
}
}
}
private FileStream readFs;
private FileStream writeFs;
private int busize = 1024 * 1024 * 5;
private byte[] buffer;
//异步读写文件
private void button4_Click(object sender, EventArgs e)
{
buffer = new byte[busize];
ReadFileAsync("第一节DataSet与DataTable1.exe");
}
//异步读取
private void ReadFileAsync(string fName)
{
readFs = new FileStream(fName, FileMode.Open, FileAccess.Read, FileShare.Read, busize, true);
IAsyncResult iResult = readFs.BeginRead(buffer, 0, buffer.Length, OnCompleteRead, null);
}
object lockbu = new object();
//异步读的回调
private void OnCompleteRead(IAsyncResult iResult)
{
int byteCount = readFs.EndRead(iResult);
if (byteCount > 0)
{
//写读取到的长度
WriteFileAsync("D:/第一节DataSet与DataTable2.exe", byteCount);
if (byteCount < busize)
readFs.Close();
else
readFs.BeginRead(buffer, 0, busize, OnCompleteRead, null);
}
else
readFs.Close();
}
//异步写
private void WriteFileAsync(string fName, int count)
{
writeFs = new FileStream(fName, FileMode.Append, FileAccess.Write, FileShare.None, count, true);
writeFs.BeginWrite(buffer, 0, count, OnCompleteWrite, null);
writeFs.Close();
}
//异步写的回调
private void OnCompleteWrite(IAsyncResult iResult)
{
writeFs.EndWrite(iResult);
}
工作中常用随笔

浙公网安备 33010602011771号