流操作
文件流:FileStream——用来操作文件,需要事先导入命名空间System.IO
使用流的步骤:
1,创建流:Filestream fs=new Filestream(“文件路径”,FileMode枚举)
FileMode.Append - 如果存在,就打开追加;如果不存在就新建
FileMode.Create - 如果存在,覆盖。如果不存在就新建。
FileMode.OpenOrCreate。如果存在就打开,不存在就新建。
2,读取或写入流
(1)写入流
第一步:需要把写入的字符串编译成二进制数组
byte[] aaa = System.Text.Encoding.Default.GetBytes(txt.Text);
第二步:写入流
fs.Write(aaa, 0, aaa.Length);
//第一个参数:要被写进去的二进制数组;
//第二个参数:开始的位置,一般都是0
//第三个参数:要往流里面写入的长度。一般都是数组的length
(2)读取流
第一步:准备一个二进制数组,用来接收二进制数据
byte[] aaa = new byte[fs.Length]; //数组的长度一般使用流的长度来定义,因为这个数组就是用来存储流中的数据的
第二步:使用流进行读取,把读出来的数据放在上面的二进制数组中
fs.Read(aaa,0,aaa.Length);
//第一个参数:被读出来的二进制数据;
//第二个参数:开始的位置,一般都是0。从哪开始读
//第三个参数:要读取的长度。一般都是数组的length。即流的长度(但是不能用fs.Length,因为它是long类型,而此处需要的是int类型)
第三步:把读出的二进制数组编译成字符串赋给textbox.Text
textbox.Text= System.Text.Encoding.Default.GetString(aaa);
3,关闭流:fs.Close();
注意:文件操作时,为防止内存泄漏硬盘读取错误造成流关闭不了常使用try——finally或者是using事务来处理
案例:
private void btnSave_Click(object sender, EventArgs e) { FileStream fs = null; try { //创建流 fs = new FileStream("aaa.txt", FileMode.Create); //把文本框的字符串,变成1010101二进制byte[] byte[] aaa = System.Text.Encoding.Default.GetBytes(txt.Text); //写入流 fs.Write(aaa, 0, aaa.Length); } finally { //关闭流 if (fs != null) { fs.Close(); } } } private void button1_Click(object sender, EventArgs e) { //创建流 using (FileStream fs = new FileStream("aaa.txt", FileMode.Open)) { //准备一个空的二进制数组,用来接收读取出来的内容 byte[] aaa = new byte[fs.Length]; //读取流 fs.Read(aaa, 0, aaa.Length); //把二进制转为字符串 txt.Text = System.Text.Encoding.Default.GetString(aaa); //关闭流 fs.Close(); } }
******对于文本(字符串)形式的文件流可以使用streamWriter和streamReader来简化操作
(1)创建流
FileStream fs = new FileStream("bbb.txt",FileMode.Create); //写入流(创建文件)
// FileStream fs = new FileStream("bbb.txt",FileMode.Open); //读取流(打开文件)
(2)套写入器或读取器
StreamWriter writer = new StreamWriter(fs); //新建写入器
// StreamReader reader = new StreamReader(fs); //新建读取器
(3)使用读取器或写入器对文件进行操作
writer.Writer(textbox.Text);
// textbox.Text = reader.ReadToEnd();
(4)关闭读取器写入器和文件流
writer.Close();
//reader.Close();
fs.Close();
*******对于文本(字符串)形式的文件还可以再简化。——不用写流的创建,关闭,直接使用流的读取器和写入器
private void button4_Click(object sender, EventArgs e) { StreamWriter writer = new StreamWriter("ccc.txt",true, Encoding.Default); //第一个参数是文件的路径,第二个参数是bool型的(是否追加),第三个参数编码格式 writer.Write(txt.Text); writer.Close(); } private void button5_Click(object sender, EventArgs e) { StreamReader reader = new StreamReader("ccc.txt",Encoding.Default); txt.Text = reader.ReadToEnd(); reader.Close(); }