1.枚举类FileMode

指定操作系统打开文件的方式

  • CreateNew  指定操作系统应创建一个新的文件
  • Create  指定操作系统应创建一个新的文件。 如果该文件已存在,则会覆盖它
  • Open  指定操作系统应打开现有文件
  • OpenOrCreate  指定操作系统应打开一个文件,是否它存在,则否则,应创建一个新的文件
  • Truncate  指定操作系统应打开现有文件。 当打开文件时,应被截断,以便其大小为零字节
  • Append  如果它存在,并且查找到该文件的末尾,或者创建一个新文件,请打开该文件

2.枚举类FileAccess

对于读、 写或读/写访问的文件中定义的常数

  • Read  对文件的读取访问权限。 可以从文件读取数据
  • Write  对文件的写入访问权限。 数据可以写入该文件
  • ReadWrite  读取和写入到文件的访问。 可以写入和从文件中读取数据

   3.枚举类FileShare

     包含用于控制的访问其他类型的常数 System.IO.FileStream 对象可以具有相同的文件

  • None  拒绝共享当前文件。 在关闭文件之前,任何请求打开的文件 (此进程或另一个进程) 将失败
  • Read  允许以后打开文件进行读取
  • Write  允许以后打开文件进行写入
  • ReadWrite  允许以后打开的文件进行读取或写入
  • Delete  允许以后删除文件
  • Inheritable  使文件句柄由子进程继承。 这是不直接支持 Win32

   4.FileStream类

     FileStream派生于抽象类Stream,Stream抽象类实现了IDisposable接口

常用构造方法:

  • FileStream(String 文件路径,FileMode 文件打开模式)
  • FileStream(String 文件路径,FileMode 文件打开模式,FileAccess 文件访问方式)
  • FileStream(String 文件路径,FileMode 文件打开模式,FileAccess 文件访问方式,FileShare 文件共享方式)

     常用方法:

  • Read() 从流中读取数据,返回字节数组
  • Write() 将字节块(字节数组)写入该流
  • Seek() 设置文件读取或写入的起始位置
  • Flush() 清除该流缓冲区,使得所有缓冲的数据都被写入到文件中
  • Close() 关闭当前流并释放与之相关联的所有系统资源

     属性:

  • CanRead 判断当前流是否支持读取,返回bool值,True表示可以读取
  • CanWrite 判断当前流是否支持写入,返回bool值,True表示可以写入
  • Position 获取或设置此流的当前位置

读取文本文件

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace FileStreamTest
{
class Program
{
static void Main(string[] args)
{
using (FileStream fileStream = new FileStream("E:\\source.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
byte[] buff = new byte[];//设置内存缓存区大小
while (true)
{
int r = fileStream.Read(buff, , buff.Length);
if (r == )
break;
else
{
string str = Encoding.Default.GetString(buff);
Console.Write(str);
}
}
}
Console.WriteLine("读取结束");
Console.ReadLine();
}
}
}

写入文本文件

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace FileStreamTest
{
class Program
{
static void Main(string[] args)
{
using (FileStream fileStream = new FileStream("E:\\source.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
//将要追加的字符串转换成字节数组
byte[] byteBuffer = Encoding.Default.GetBytes("你最好!Yeah!");
//设置当前流的位置(如果不设置下面的Position属性,执行Write方法的时候是从前往后覆盖)
fileStream.Position = fileStream.Length;
//写入文件
fileStream.Write(byteBuffer, , byteBuffer.Length); }
Console.ReadLine(); }
}
}

C#-----类FileStream的使用的更多相关文章

  1. .net System.IO.Stream 流操作类(FileStream等)

    Stream 是所有流的抽象基类.流是字节序列的抽象概念. 流涉及到的3个基本操作: 读取流,读取是指从流到数据结构(如字节数组)的数据传输. 写入流,写入是指从数据结构到流的数据传输. 流查找,查找 ...

  2. 【C# IO 操作】 Path 路径类 |Directory类 |DirectoryInfo 类|DriveInfo类|File类|FileInfo类|FileStream类

    Directory类 Directory类 是一个静态类,常用的地方为创建目录和目录管理. 一下来看看它提供的操作. 1.CreateDirectory 根据指定路径创建目录.有重载,允许一次过创建多 ...

  3. C# Path类 FileStream(文件流) 与 File(文件) 读取的区别

    1.采用文件流读取数据是一点一点从文件中读取数据对内存的压力相对较小;而采用文件读取数据是一下全部读取过来对内存造成的压力相对较大 2.File读取: string str = @"E:\Q ...

  4. 文件读写(三)利用FileStream类操作字节数组byte[]、BinaryFormatter、内存流MemoryStream

    一.Stream类概述 在.NET Framework中,文件和流是有区别的.文件是存储在磁盘上的数据集,它具有名称和相应的路径.当打开一个文件并对其进行读/写时,该文件就称为流(stream).但是 ...

  5. [转载]FileStream读写文件

    FileStream读写文件 FileStream类:操作字节的,可以操作任何的文件 StreamReader类和StreamWriter类:操作字符的,只能操作文本文件. 1.FileStream类 ...

  6. C# Stream篇(四) -- FileStream

    FileStream 目录: 如何去理解FileStream? FileStream的重要性 FileStream常用构造函数(重要) 非托管参数SafeFileHandle简单介绍 FileStre ...

  7. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  8. Stream 流操作

     Stream 类 先看下面的图 Stream 是所有流的抽象基类(不能被实例化,需要使用他的派生类FileStream/MemoryStream/BufferedStream).流是字节序列的抽象概 ...

  9. C#中的 序列化和反序列化

    什么是序列化和反序列化? 序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用. 我想最主要的作用有: 1.在进程下次启动时读取上次保存的对象的 ...

随机推荐

  1. unicode、utf8、字符串字面值

    发现好多新人都不明白,或者说没有直观的感受,其实很简单. 简单的说,unicode是一种将全球文字都涵盖的字典 - 可以认为每个字符都有一个数字索引. 比如可以这样(假设):'a' 的索引是13,'我 ...

  2. Linux------使用Xfpt6连接阿里云ECS服务器

    1.安装Xftp6,直接下一步到安装完成就可以了 2.新建文件传输 3.新建会话 4.填写会话信息 5.点击“连接”即可

  3. java基础---->String中的split方法的原理

    这里面主要介绍一下关于String类中的split方法的使用以及原理. split函数的说明 split函数java docs的说明: When there is a positive-width m ...

  4. Qt编写自定义控件9-导航按钮控件

    前言 导航按钮控件,主要用于各种漂亮精美的导航条,我们经常在web中看到导航条都非常精美,都是html+css+js实现的,还自带动画过度效果,Qt提供的qss其实也是无敌的,支持基本上所有的CSS2 ...

  5. PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数

    CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件. 一.CSV数据导入函数fgetcsv() fgetcsv() 函数从文件指针中读入一行并解析 CSV ...

  6. 线程锁Lock

    from threading import Thread, Lock import time def func(): global n n -= 1 n = 10 t_list = [] for i ...

  7. PentestBox在win10里打不开工具

    PentestBox详细安装过程:http://www.cnblogs.com/ESHLkangi/p/8336398.html 在使用PentestBox的时候出现了打不开工具的问题,最后看到一个老 ...

  8. APK使用APKTOOL命令行进行解包和重新打包

    在刚开始安卓逆向时遇到了一个很坑爹的问题,就是对apk进行反编译后不能重新打包, 查了一些资料,这里就简单说一下用apktool进行解包和打包的整个过程. 首先把一个apk和apktool放到同一目录 ...

  9. web 接口测试入门

    在此之前先简单的介绍一下基本概念:我们想要打开一个网站,首先是需要往浏览器的地址的URL输入框架中输入网地址.当我敲下回车后,通过HTTP协议,将网址传送到域名解析服务器,域名解析服务器根据网址找到对 ...

  10. maven deploy 上传jar包到私有仓库

    mvn \ deploy:deploy-file \ -DgroupId=com.weibo.datasys \ -DartifactId=data-flow \ -Dversion=2.0.0 \ ...