C#-----类FileStream的使用
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的使用的更多相关文章
- .net System.IO.Stream 流操作类(FileStream等)
Stream 是所有流的抽象基类.流是字节序列的抽象概念. 流涉及到的3个基本操作: 读取流,读取是指从流到数据结构(如字节数组)的数据传输. 写入流,写入是指从数据结构到流的数据传输. 流查找,查找 ...
- 【C# IO 操作】 Path 路径类 |Directory类 |DirectoryInfo 类|DriveInfo类|File类|FileInfo类|FileStream类
Directory类 Directory类 是一个静态类,常用的地方为创建目录和目录管理. 一下来看看它提供的操作. 1.CreateDirectory 根据指定路径创建目录.有重载,允许一次过创建多 ...
- C# Path类 FileStream(文件流) 与 File(文件) 读取的区别
1.采用文件流读取数据是一点一点从文件中读取数据对内存的压力相对较小;而采用文件读取数据是一下全部读取过来对内存造成的压力相对较大 2.File读取: string str = @"E:\Q ...
- 文件读写(三)利用FileStream类操作字节数组byte[]、BinaryFormatter、内存流MemoryStream
一.Stream类概述 在.NET Framework中,文件和流是有区别的.文件是存储在磁盘上的数据集,它具有名称和相应的路径.当打开一个文件并对其进行读/写时,该文件就称为流(stream).但是 ...
- [转载]FileStream读写文件
FileStream读写文件 FileStream类:操作字节的,可以操作任何的文件 StreamReader类和StreamWriter类:操作字符的,只能操作文本文件. 1.FileStream类 ...
- C# Stream篇(四) -- FileStream
FileStream 目录: 如何去理解FileStream? FileStream的重要性 FileStream常用构造函数(重要) 非托管参数SafeFileHandle简单介绍 FileStre ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- Stream 流操作
Stream 类 先看下面的图 Stream 是所有流的抽象基类(不能被实例化,需要使用他的派生类FileStream/MemoryStream/BufferedStream).流是字节序列的抽象概 ...
- C#中的 序列化和反序列化
什么是序列化和反序列化? 序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用. 我想最主要的作用有: 1.在进程下次启动时读取上次保存的对象的 ...
随机推荐
- 我们正在招聘java工程师,想来美团工作吗?
我们希望你有? 1.3年以上Java服务器开发经验,精通Java及面向对象设计开发,熟悉主流web框架 2.熟悉网络编程,熟悉TCP/IP协议,熟悉互联网应用协议 3.有大规模分布式系统设计与开发经验 ...
- LiDAR、LAS、LAS Dataset与点云
LiDAR Light Detection And Ranging,激光探测及测距,是一种光学遥感技术,使用激光对地球表面的密集采样,产生高精度X.Y.Z测量值. 激光雷达系统的主要硬件组成部分包括一 ...
- 企业SaaS模式的优缺点
好处: 1.降低成本 项目成本.人员成本 2.使用简单 无需系统维护,用户只需登录就可以享受系统的功能 3.安全性 SaaS模式下,企业用户最关注的是自己的数据能不能得到安全保护. A.涉及的数据有哪 ...
- MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report e
早上来到公司,线上的项目报错: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionExcepti ...
- Docker-集群swarm(5)
Docker集群的概念 群集是一组运行Docker并加入集群的计算机.在此之后,您继续运行您习惯使用的Docker命令,但现在它们由群集管理器在群集上执行.群中的机器可以是物理的或虚拟的.加入群组后 ...
- sip协议中文讲解
https://blog.csdn.net/qiuchangyong/article/details/50748854
- JS设计模式——单例模式剖析
转载于原文地址:https://blog.csdn.net/q1056843325/article/details/52933426 举一个通俗的例子,在页面中点击登录按钮,弹出了一个登录浮窗,这个登 ...
- 腾讯云云机安装dockers
云机的配置 首先更新一下源(更新前一直装不了) 下载dockers-ce(社区版) 启动dockers服务 使用hello-world进行测试(由于本地没有hello-world这个镜像,所以dock ...
- 写jquery插件(转载)
如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...
- 小tip: transition与visibility
一.transition与visibility 这里的transition指的就是CSS3中的那个过渡动画属性transition. 如果我们仔细查看其支持的CSS属性值,会发现竟然有一个visibi ...