,,C#基础知识之FileStream

,,C#基础知识之FileStream

C#中文件流对象表示在磁盘或网络路径上指向文件的流。可以使用文件流类对文件系统上的文件进行读取、写入、打开、关闭等。下面我们就来详细探讨下

一、FileStream的基础知识

属性:

CanRead判断当前流是否支持读取,返回弯曲件值,真的表示可以读取

CanWrite判断当前流是否支持写入,返回弯曲件值,真的表示可以写入

方法:

阅读()从流中读取数据,返回字节数组

写()将字节块(字节数组)写入该流

Seek()设置文件读取或写入的起始位置

齐平()清除该流缓冲区,使得所有缓冲的数据都被写入到文件中

关闭()关闭当前流并释放与之相关联的所有系统资源

文件的访问方式:(文件访问)

文件访问。阅读(对文件读访问)

文件访问。写(对文件进行写操作)

文件访问。读写(对文件读或写操作)

文件打开模式:(文件模式)包括6个枚举

文件模式.附加打开现有文件准备向文件追加数据,只能同文件访问。写一起使用

文件模式.创造指示操作系统应创建新文件,如果文件已经存在,它将被覆盖

文件模式.新建指示操作系统应创建新文件,如果文件已经存在,将引发异常

文件模式.打开指示操作系统应打开现有文件,打开的能力取决于文件访问所指定的值

文件模式.OpenOrCreate指示操作系统应打开文件,如果文件不存在则创建新文件

文件模式.缩短指示操作系统应打开现有文件,并且清空文件内容

文件共享方式:(文件共享)

文件共享方式是为了避免几个程序同时访问同一个文件会造成异常的情况。

文件共享方式包括四个:

文件共享。没有人谢绝共享当前文件

文件共享。阅读充许别的程序读取当前文件

文件共享。写充许别的程序写当前文件

文件共享。读写充许别的程序读写当前文

二、文件流的异步操作

使用系统;

使用系统。集合。泛型;

使用系统。组件模型;

使用系统。数据;

使用系统。绘图;

使用系统100 . Linq

使用系统。文本;

使用系统。线程。任务;

使用系统窗户。形式

使用系统。木卫一;

使用系统。穿线;

命名空间斯特朗温

{

公共分部类表单1:表单

{

公共表单1()

{

初始化组件();

}

私有void button1_Click(对象发送方,EventArgs e)

{

字符串文件路径=@ ' E:\ Test \ Test \ local \ a . txt ';

string fileName=' a.txt

系统10 . IO。FileInfo f=new FileInfo(@ ' E:\ Test \ Test \ server \ a . txt ');

int fileLength=Convert .长度为32英尺。tostring());

线程池SetMaxThreads(100,100);

使用(系统。文件流流=新系统10 . IO。文件流(文件路径,文件模式。创建,文件访问。写,文件共享。写,1024,真))

{

for(int I=0;我文件长度;i=100 * 1024)

{

int length=(int)数学. Min(100 * 1024,文件长度-I);

var bytes=GetFile(文件名,我,长度);

溪流BeginWrite(bytes,0,length,new AsyncCallback(回调),流);

}

溪流flush();

}

}

公共静态字节[] GetFile(字符串名int开始,int长度)

{

字符串文件路径=@ ' E:\ Test \ Test \ server \ a . txt ';

使用(系统FileStream fs=新系统10 . IO。文件流(文件路径,系统10 . IO。打开,系统.IO。文件访问.读取,文件共享.ReadWrite,1024,true))

{

字节[]缓冲区=新字节[长度];

fs .位置=开始;

fs .BeginRead(buffer,0,length,new AsyncCallback(已完成),fs);

返回缓冲区;

}

}

静态空的已完成(IAsyncResult结果)

{

文件流fs=(文件流)结果。异步状态;

fs .结束读取(结果);

fs .close();

}

公共静态空的回调(IAsyncResult结果)

{

文件流流=(文件流)结果。异步状态;

溪流EndWrite(结果);

溪流. close();

}

}

}

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • swf upload,fileupload控件上传文件
  • swf upload,fileupload控件上传文件,文件上传插件SWFUpload的使用指南
  • fileupload控件上传图片,fileupload实现多文件上传
  • fileupload控件上传图片,fileupload实现多文件上传,使用fileupload组件实现文件上传功能
  • filereader blob,js下载文件到本地 blob
  • filereader blob,js下载文件到本地 blob,js利用FileReader读取本地文件或者blob方式
  • fileitem获取文件名,fileitem.write
  • fileitem获取文件名,fileitem.write,浅谈FileItem类的常用方法
  • dockerfile cmd enterpoint,docker run cmd entrypoint的区别
  • dockerfile cmd enterpoint,docker run cmd entrypoint的区别,Dockerfile中ENTRYPOINT 和 CMD的区别说明
  • asp fileupload,
  • asp fileupload,,aspupload 3.0 下载与使用集锦
  • apache任意文件上传,apache服务器上传文件,Apache commons fileupload文件上传实例讲解
  • ,,聊聊MultipartFile与File的一些事儿
  • ,,病毒Autorun.inf、pagefile.pif等的解决办法
  • 留言与评论(共有 条评论)
       
    验证码: