当前位置: 代码迷 >> 综合 >> C#:文件IO操作 FileStream的用法 及 StreamReader 和 StreamWriter的用法
  详细解决方案

C#:文件IO操作 FileStream的用法 及 StreamReader 和 StreamWriter的用法

热度:50   发布时间:2023-12-14 13:13:08.0

1. FileStream 用法代码

static void Main(string[] args) {//memory : 内存//Binary : 二进制String path = @"F:\ly\test2018_12_10.txt";//FileMode.Create  如果文件不存在,则重新创建,否则覆盖它//FileMode.Append  如果文件已存在,则不覆盖,而是从文件末尾添加操作,否则创建一个文件//FileMode.OpenOrCrate   如果文件存在,则打开,不存在则创建一个FileStream fs = new FileStream(path,FileMode.Create,FileAccess.ReadWrite);//注意点:在txt中换行必须要2个字符  \r\nString s = "123 qwer <>? \r\n 你好啊!"; //23个字节byte[] bs = System.Text.Encoding.Default.GetBytes(s); //Stirng 转 byte[]fs.Write(bs,0,bs.Length);//注意点:close()语句必须要有,不然所有的流操作都无效fs.Close();//追加内容 只能以写的方式fs = new FileStream(path,FileMode.Append,FileAccess.Write);fs.Write(bs,0,bs.Length);fs.Close();//读取内容只能以读的方式fs = new FileStream(path,FileMode.OpenOrCreate,FileAccess.Read);byte[] bts = new byte[1024];//1024只是请求的字节数,reallength是真正读取的字节数,用bts存储读取的内容int reallength = fs.Read(bts,0,1024);Console.WriteLine(fs.Length+"   "+bts.Length +"   "+reallength);//46  1024   46String reads = System.Text.Encoding.Default.GetString(bts); //byte[] 转 StringConsole.WriteLine(reads);fs.Close();//将读取的内容再写入文件fs = new FileStream(path,FileMode.Append,FileAccess.Write);//fs.Write(bts,0,1024);  不用这句,虽然bts的长度有1024,但是有效值的长度只有 reallengthfs.Write(bts,0,reallength);fs.Close();Console.Read();}

2.总结

我们一开始写入了23个字节,后又追加了23个字节,最后又追加了46个字节,所以运行代码后,输出文件 应该有92个字节。

文件详细情况如下:

 

3. StreamReader 和 StreamWriter的用法代码:

FileStream是针对于字节操作的,而这两个可以针对于一行字符串操作,操作比较方便。

static void Main(string[] args) {String path = @"F:\ly\test2018_12_10.txt";//第二个参数为true表名为追加内容,为false或不写则为覆盖文件内容//下面两行代码会清除文件内容//StreamWriter writer = new StreamWriter(path);//writer.Close();//这两行代码不会清除文件内容//StreamWriter writer = new StreamWriter(path,true);//writer.Close();必须选定默认编码方式,不然写入文件的字符串乱码StreamWriter writer = new StreamWriter(path, true, Encoding.Default);writer.WriteLine("这是第一行!");writer.WriteLine("这是第二行!");writer.Close();//StreamReader reader = new StreamReader(path); //必须选定默认编码方式,不然打印出来的字符串乱码StreamReader reader = new StreamReader(path, Encoding.Default);String s = "";while ((s = reader.ReadLine()) != null) {Console.WriteLine(s);}reader.Close();Console.Read();}

一开始文件的内容是:

helloWord

运行代码之后,内容为:

hello world这是第一行!
这是第二行!