,,C# FileStream简单介绍和使用

,,C# FileStream简单介绍和使用

本文主要详细介绍了C# FileStream的基本功能和使用方法,有一定的参考价值,感兴趣的朋友可以参考一下。

本章介绍:FileStream类的基本功能和简单例子;

1、引用命名空间:使用系统。木卫一;

2、注意:使用IO操作文件时注意流的关闭和释放问题!

强烈推荐:在使用中编写创建文件流对象的过程,会自动帮助我们释放资源;

使用try{} catch(Exception ex){}捕获一次;

3、FileStream 操作字节,可以操作任何类型的文件;下面是对FileStream类的方法和参数的简要介绍:

(1)FileStream()的函数:创建FileStream对象,参数:第一个是路径,第二个是FileMode filemode的枚举,第三个是数据模式FileAcess。

FileStream(字符串,文件模式):

FileStream(字符串、文件模式、文件访问)

文件流(字符串、文件模式、文件访问、文件共享)

FileStream(字符串,文件模式,文件访问,文件共享,Int32)

初始化FileStream时,使用具有文件共享属性的构造函数(System。IO.FileShare)比使用定制线程锁更好。

(2)FileMode: CreateNew,Create and overwrite,Open,OpenOrCreate,Truncate,Append

(3)file access(文件流对象如何访问文件):Read(只读)、Write(写)、ReadWirte(读写);

(4)FileShare(进程如何共享文件):None(拒绝共享),Read,Write,ReadWrite(同时读写),Delete;

(5)缓冲区大小(缓冲区大小设置)

4、Stream.Read(arrayByte[], Int32, Int32):从流中读取一个字节,将数据写入给定的缓冲区;

5、Stream.Write(arrayByte[], Int32, Int32):使用缓冲区中的数据将字节块写入此流;

6、close():关闭当前流,释放与当前流相关的任何资源(如套接字和文件句柄);

7、dispose():释放流使用的所有资源;

8、CopyTo(Stream):从当前流中读取所有字节,并将它们写入目标流。

CopyTo(Stream,Int32):从当前流中读取所有字节,并使用指定的缓冲区大小将它们写入目标流。

9.Seek()(FileStream类维护内部文件指针,指向文件中下一次读写操作的位置):将此流的当前位置设置为给定值。(stream.seek(Int64,SeekOrigin)

第一个参数以字节为单位指定文件指针的移动距离。第二个参数指定计算的开始位置;SeekOrigin枚举包含三个值:Begin、Current和End;

例如:aFile。Seek(0,SeekOrigin。end);

10.因为文件共享模式设置为允许后续写,所以即使多个线程同时写文件,也会等到前一个线程写完,不会出现错误。

复制代码如下:using(filestream log file=new filestream(log file path,filemode。openorcreate,fileaccess.write,fileshare.write))

11、简单示例1:简单文件编写

FileStream devStream=新文件流(devPath,FileMode。追加,文件访问。写,文件共享。ReadWrite,512);

德福流。Write(数据,0,128);

如果(devStream!=空)

德福流。close();

12、简单示例2:将文件作为附加内容写入。

公共静态类MonitData

{

公共静态字符串devPath=string。空的;

私有静态对象obj lock=new object();

公共静态void WriteInfo(byte[] data)

{

锁定(对象锁定)

{

如果(!字符串。IsNullOrEmpty(devPath))

{

byte[] byteArray=新字节[128];

数组。Copy(data,0,byteArray,0,128);

if (byteArray!=空字节数组。长度==128)

{

使用(系统。IO.FileStream fs=System。IO.File.OpenWrite(devPath))

{

fs。Seek(0,SeekOrigin。end);

fs。写(byteArray,0,byteArray。长度);

fs。close();

fs。dispose();

}

}

}

}

}

}

13、简单示例:文件流写入

公共静态void Main(string[] args)

{

String=@' e: \下载\软件';

秒表sw=新秒表();

西南。start();

使用(FileStream fs writer=new FileStream(str @ ' \ opencv-3.0 . exe ',FileMode。创建,文件访问。写))

{

使用(FileStream fs reader=new FileStream(str @ ' \ opencv-2。4 .9 .文件模式.打开,文件访问。阅读))

{

字节[]字节=新字节[1024 * 4];//4kB是合适的;

int readNum

while((readNum=fsReader .读取(字节,0,字节。长度))!=0)//小于说明读完了

{

fsWriter .Write(字节,0,read num);

fsWriter .flush();//清除缓冲区,把所有数据写入文件中

fsWriter .close();

fsWriter .dispose();

}

}

}

西南. stop();

控制台WriteLine('总的运行时间为"{0}",软件ElapsedMilliseconds);

控制台read key();

}

14、简单示例:读取文件

公共静态字符串文件流读取文件(字符串文件路径)

{

字节[]数据=新字节[100];

char[]charData=new char[100];

FileStream file=new FileStream(文件路径,文件模式.打开);

//文件指针指向0位置

文件Seek(0,SeekOrigin .begin);//可以设置第一个参数

//读入两百个字节

文件。读取(data,0,(int)文件。长度);

//提取字节数组

解码器十二月=编码10 . UTF8。get decoder();

dec.GetChars(data,0,data .Length,charData,0);

文件. close();

文件dispose();

返回转换ToString(charData);

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行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等的解决办法
  • 留言与评论(共有 条评论)
       
    验证码: