C#流类FileStream学习使用笔记
程序员文章站
2023-12-01 15:49:10
static void main(string[] args)
{
//创建filestream对象需要指定 文件名,打开模式,访问...
static void main(string[] args) { //创建filestream对象需要指定 文件名,打开模式,访问模式,共享模式 //1.调用本身的构造函数创建流 filestream fs1 = new filestream(@"f:\1.txt", filemode.open, fileaccess.readwrite,fileshare.readwrite); //2.利用file类或者fileinfo类的open方法 //filestream fs2 = file.open(@"f:\1.txt", filemode.open, fileaccess.read); ////3.利用file类或者fileinfo类的create方法创建 //filestream fs3 = file.create(@"f:\1.txt");//filemode.create,fileaccess.write ////4.利用file类或者fileinfo类的openread方法创建 //filestream fs4 = file.openread(@"f:\1.txt");//filemode.open, fileaccess.read ////5.利用file类或者fileinfo类的openwrite方法创建 //filestream fs5 = file.openwrite(@"f:\1.txt");//filemode.open,fileaccess.write //inserttext(fs1, "你好,我是菜鸟rohelm.x!");//这里我要找一个可读可写共享的流做实验 //fs1.close();//虽然这里是fileshare.readwrite模式,但是任然需要附加权限,所以释放流才可解除文件的占用状态 // console.writeline( file.readalltext(@"f:\1.txt")); console.writeline(readstream(fs1)); console.readkey(); } //写入流的过程是编码的过程,即将一组unicode字符转换成一个字节序列 public static void inserttext(filestream fs, string str) { byte[] codes = new utf8encoding(true).getbytes(str);//编码过程初始化 utf8encoding 类的新实例 //@此处可以是看做流中的存储模式 fs.write(codes, 0, codes.length);//写入流 } //读取流的过程是一个解码的过程,也就是从流中读取字节序列并按照编码规则还原为unicode字符 public static string readstream(filestream fs) { stringbuilder str = new stringbuilder(); byte[] b = new byte[fs.length];//创建一个可以存放流的字节序列 utf8encoding utf = new utf8encoding(true);//创建一个utf8encoding实例,指定标记顺序 while (fs.read(b, 0, b.length) > 0)//循环读取流中的字节放入指定的字节序列 { str.append(utf.getstring(b));//解码过程 } fs.close(); return str.tostring(); } }
streamreader and streamwriter
static void main(string[] args) { ////=================streamreader的创建============================= ////从文本文件读或者写的时候,首先要创建一个与文件相关联的streamwriter或streamreader对象 ////与一种字符编码方式相关,默认指定为utf8encoding。 ////创建方式:可以联系想一下文件流的创建 ////1.streamreader的构造函数直接创建 //streamreader sr1 = new streamreader(@"f:\1.txt", utf32encoding.ascii); ////2.利用file类或者fileinfo类的opentext方法创建 //streamreader sr2 = file.opentext(@"f:\1.txt");//这个方法只能编码为utf8encoding ////3.既然要读取文本流就可以直接从filestream里读取,所以可以在此基础上创建, ////也可间接地利用file类或者fileinfo类相关方法创建 //filestream f1 = new filestream(@"f:\1.txt",filemode.open,fileaccess.readwrite); //streamreader sr3 = new streamreader(f1); ////由此可推断,streamreader级可以接受文件路径创建也可以直接接受文件流创建 ////=================writereader创建============================= ////1.自身构造函数直接创建 //streamwriter sw1 = new streamwriter(@"f:\1.txt"); ////2.利用file类或者fileinfo类的createtext和appendtext方法创建,//这个方法只能编码为utf8encoding //streamwriter sw2 = file.appendtext(@"f:\1.txt"); //sw2 = new fileinfo(@"f:\1.txt").createtext(); ////3.可以直接从filestream里读取,所以可以在此基础上创建, ////也可间接地利用file类或者fileinfo类相关方法创建 //streamwriter sw3 = new streamwriter(f1); //filestream f2 = new fileinfo(@"f:\1.txt").open(filemode.open); //sw3 = new streamwriter(f2); //===================测试读写==================== streamwriter sw = writetext(); streamreader sr=new streamreader(@"f:\1.txt"); string s = readtext(sr); console.writeline(s); console.readkey(); } //读取方法 public static string readtext(streamreader sr) { stringbuilder sb = new stringbuilder(); while (!sr.endofstream) { sb.appendline(sr.readline()); } sr.close(); return sb.tostring(); } //写入方法 public static streamwriter writetext() { using (streamwriter sw = new streamwriter(@"f:\1.txt",true)) { sw.writeline(datetime.now.tostring()); return sw; } }
上一篇: Android自定义View圆形和拖动圆跟随手指拖动
下一篇: C#基础语法:Base关键字学习笔记