C#中filestream类的属性、方法介绍

使用 FileStream 选件类读取,写入,打开和关闭的文件在文件系统和操作其他文件相关的操作系统句柄,包括管道铺设、标准输入和标准输出。可以使用 Read、Write、CopyTo和 Flush 方法执行同步操作或 ReadAsync、WriteAsync、CopyToAsync和 FlushAsync 方法执行异步操作。  使用异步方法执行大量资源文件操作,而不必阻止主线程。  此性能注意事项非常重要。Windows 应用商店 app 或耗时的流操作会阻止 UI 线程并将您的应用程序显示的 桌面 app,就象它不起作用。  缓冲输入和输出以获得更好的性能

例子

废话不说,开始操作。

1.拖好控件、必须滴,将除了要写文件的文本框外,其他的文本框的 ReadOnly 属性均设为 True !

2.开始"选择文件"操作

 代码如下 复制代码

privatevoid btnReadChoose_Click(object sender, EventArgs e)
        {
//创建 打开文件 对话框,可以直接拖控件哈。。
            OpenFileDialog ofd=new OpenFileDialog();
//将文件路径显示在文本框
if (ofd.ShowDialog() == DialogResult.OK)
            {
                txtReadPath.Text = ofd.FileName;
            }
        }

效果图。。。路径就显示出来了。

3.开始"读出"操作,并将文本内容显示在文本框.

  其中先写出一个显示“温馨提示”消息的方法

 代码如下 复制代码

#region 显示温馨提示的消息+void MsgShow(string Msg)
///<summary>
/// 显示温馨提示的消息
///</summary>
///<param name="Msg">消息</param>
void MsgShow(string Msg)
        {
            lbResult.Text ="温馨提示:"+Msg;
        }
#endregion

读出操作

 代码如下 复制代码

privatevoid btnReadFile_Click(object sender, EventArgs e)
        {
//创建文件流、流操作要进行异常处理,并以using来释放对象
try
            {
using (FileStream fs =new FileStream(txtReadPath.Text, FileMode.Open))
                {
//定义缓存区,3M 大小
byte[] arrFileData =newbyte[1024*1024*3];
//读文件 存在 arrFileData 中
                    fs.Read(arrFileData, 0, arrFileData.Length);
//转 编码格式 以便显示在 文本框 txtReadMsg 中
string ChangeToString = Encoding.Default.GetString(arrFileData);
                    txtReadMsg.Text = ChangeToString;
                    MsgShow("文本读取成功!!!");
                }
            }
catch (Exception ex)
            {
                MessageBox.Show("异常:"+ ex.Message);
            }

        }

4.开始"写入"操作,选择文件就不累赘了,差不多.

 代码如下 复制代码

privatevoid btnWriteFile_Click(object sender, EventArgs e)
        {
//获取要写入文本的数据
string strWriteData = txtWriteMsg.Text;
try
            {
using (FileStream fs =new FileStream(txtWritePath.Text, FileMode.Create))
                {
//转为二进制写入文本
byte[] arrWriteData = Encoding.Default.GetBytes(strWriteData);

//fs.Write(数据缓存区,从第几个byte开始写,写多少个)
                    fs.Write(arrWriteData, 0, arrWriteData.Length);
                    MsgShow("写入文本成功!!!");
                }
            }
catch (Exception ex)
            {

                MessageBox.Show("异常:"+ ex.Message);
            }

就这么滴,一个基于文件流FileStream的文本写入、读取小程序就完工了。主要是自己总结

总结

1)读写文件的五个步骤:创建文件流、创建读写器、读写文件、关闭读写器、关闭文件流。
(2)文件流的类是FileStream,创建一个文件流时,需要指定操作文本的路径、文件的打开方式和文件的访问方式。
(3)StreamWriter是一个写入器,StramReader是一个读取器。读写文本文件可以直接使用读写器,不用创建文件流,但是不容易控制文本的打开方式和访问方式
(4)File类用于对文件进行操作,如复制、移动、删除等,Directory类用于对文件夹操作,它们都是静态类。
(5)静态类只包含静态成员,非静态类可以包含静态成员;静态类不能包含实例成员,非静态类可以包含实例成员;静态类使用类名访问其成员,非静态类使用它的实例对象访问成员。
(6)FileInfo类与File类功能类似,也可以完成对文件的基本操作。不同的是File类不可以实例化对象。如果打算多次重用某个文件对象,可以优先考虑使用FileInfo类,因为并不总是需要安全检查
(7)DirectoryInfo类与Directory类功能类似,可以完成对文件夹的基本操作。如果打算多次重用某个目录对象,可以考虑使用DirectoryInfo类的实例方法

时间: 2024-10-03 12:33:29

C#中filestream类的属性、方法介绍的相关文章

javascript中自定义对象的属性方法分享

这篇文章介绍了在javascript中自定义对象的属性方法,有需要的朋友可以参考一下   首先介绍下关联数组: 复制代码 代码如下: <script> var test=new Object(); test["a"]=1; test["b"]="string"; test["c"]=false; alert(test["a"]); </script> 执行上面的代码,显示1. 在ja

PHP中Closure类的使用方法及详解_php实例

Closure,匿名函数,又称为Anonymous functions,是php5.3的时候引入的.匿名函数就是没有定义名字的函数.这点牢牢记住就能理解匿名函数的定义了. Closure 类(PHP 5 >= 5.3.0)简介 用于代表 匿名函数 的类. 匿名函数(在 PHP 5.3 中被引入)会产生这个类型的对象,下面我们来看一下PHP Closure类的使用方法及介绍. PHP Closure类之前在PHP预定义接口中介绍过,但它可不是interface哦,它是一个内部的final类.Clo

在word文档中打&quot;√“的几种方法介绍

  有时候,我们在做电子调查报告或者填写一些资料表,会遇到一些word文档中有小方框[□],需要在里面打钩[√],说实在的,碰到的时候还真有些烦,我想很多人都有这样的感触吧,下面小编就为大家介绍在word文档中打"√"的几种方法,不会的朋友快快来学习吧! 第一种,利用Word中的"符号"插入钩. 首先打开word文档,选择插入-符号 再符号中-选择其他符号命令 字体中选择数字运算符,找到"√ 钩",点击插入即可. 第二种,利用输入法在Word中打

JavaScript中消除闭包的一般方法介绍

 这篇文章主要介绍了JavaScript中消除闭包的一般方法介绍,本文直接给出了操作示例,需要的朋友可以参考下     JavaScript 的闭包是一个其主动发展的特性, 也是一个被动发展的特性. 也就是说, 一方面, JS 有了闭包能更好解决一些问题. 另一方面, JS 为了解决某些问题, 而不得不使用闭包勉强来解决问题. 前者这里不讨论, 如果 JS 闭包能更好的解决问题, 当然使用闭包更好. 我讨论的是后者, 是因为 JS 本身的限制, 而不得不磕磕绊绊地用闭包来解决的问题, 例如"变量

java中看到类写在方法里面的类是什类啊

问题描述 java中看到类写在方法里面的类是什类啊 java中看到类写在方法里面的类是什类啊 void func (){class lei } 解决方案 方法内部的内部类的可见性更小,它只在方法内部可见,在外部类(及外部类的其它方法中)中都不可见了.同时,它有一个特点,就是方法内的内部类连本方法的成员变量都不可访问,它只能访问本方法的final型成员.同时另一个需引起注意的是方法内部定义成员,只允许final修饰或不加修饰符,其它像static等均不可用. 解决方案二: 内部类(匿名内部类) 解

java-JAVA中Collections类的“synchronizedXXXX”方法有什么用处?

问题描述 JAVA中Collections类的"synchronizedXXXX"方法有什么用处? 解决方案 ArrayList对象不是线程安全的,但Collection.synchronizedXXX方法可以把它转成线程安全的对象. 上面的代码没用多线程,Collection.synchronizedXXX的用法也不对,所以在这段代码里其实没什么作用. 参见:http://my.oschina.net/infiniteSpace/blog/305425 解决方案二: 这是同步的方法,

js基础之DOM中元素对象的属性方法详解_javascript技巧

在 HTML DOM (文档对象模型)中,每个部分都是节点. 节点是DOM结构中最基本的组成单元,每一个HTML标签都是DOM结构的节点. 文档是一个    文档节点 . 所有的HTML元素都是    元素节点 所有 HTML 属性都是    属性节点 文本插入到 HTML 元素是    文本节点 注释是    注释节点. 最基本的节点类型是Node类型,其他所有类型都继承自Node,DOM操作往往是js中开销最大的部分,因而NodeList导致的问题最多.要注意:NodeList是'动态的',

浅谈js中StringBuffer类的实现方法及使用_javascript技巧

如下所示: <strong>JAVA中有一个StringBuffer类,js中却没有下面来自己实现一个简单的js的StringBuffer类.</strong> //创建一个StringBuffer类 ,此类有两个方法:一个是append方法一个是toString方法 function StringBuffer() { this.__strings__ = []; }; StringBuffer.prototype.append = function(str) { this.__s

java监听-java中匿名类作为一个方法的参数的时候是不是默认返回一个匿名对象

问题描述 java中匿名类作为一个方法的参数的时候是不是默认返回一个匿名对象 java中匿名类作为一个方法的参数的时候是不是默认返回一个匿名对象 比如用在监听方法当中作为参数的时候 解决方案 可以这么理解,通常是创建一个匿名类的实例然后作为参数传递给指定方法 . 解决方案二: 匿名类,作为参数是返回相应的匿名对象. 具体还是要看调用的函数有参数要求吧,参数是一个对应的匿名类,或者其父类,使用它就没有问题.