本节课主要学习三个内容:

创建FileStram流

读取流

写入流

文件流FileStram类,是用来实现对文件的读取和写入。FileStram是操作字节的字节数组,当提供向文件读取和写入字节的方法时,常用StramRead类或StramWrite类来完成,它们是操作字符的。

FileStream类的构造有多种形式,最简单的一种。FileStream(String path,FileMode mode);

FIleMode枚举有几种成员,用于规定如何打开或创建文件,这些成员可以联合使用。

枚举值 说明
Append 打开现有文件并定位至文件结尾,或创建新文件
Create 创建新文件,如存在,它将被改写
CreateNew 创建新文件,如存在,将引发异常
Open 打开现有文件
OpenorCreat 如文件存在,打开;如不存在,创建新文件
TrunCate 打开现有文件,文件一旦被打开,将被截断为0字节大小

在不使用FileAccess枚举参数的版本中,默认值使用的是ReadWrite

使用场合:如果需要以其他方式打开文件,就要附加一个参数,这个参数为FileAccess参数。

FIleStream(string path,FileMode mode,FileAccess access);

参数:有三个枚举值--只读模式(Read)、读/写模式(ReadWrite)、只写模式(Wite)。

作用:基于用户的权限级别改变用户对文件的访问权限。

实例:

  桌面上51zxw文件夹中51zxw.txt,先读出其中的内容,然后在写入

File类和FIleInfo类提供了OpenRead()方法和OpenWrite方法用于创建FIleStream对象,OpenRead()方法用于以只读方式访问文件,OpenWrite方法则允许对文件进行写入内容操作。

如果利用File类及FileInfo类以只读方式访问桌面上“D:\Users\Walker\Dektop\51zxw\51zxw.txt”文件,该如何进行访问?

FileStream类有三个重要方法,分别为Seek方法、Read方法、Write方法。

Seek方法用于直接在文件中查找具体的位置

FIleStream类维护内部文件指针,这会指向文件中的位置。当打开文件时,默认指向文件的开始位置,这里的开始计算位置就是指的这个位置,它是一个SeekOrigin枚举,有3个成员,分别为Begin、Cruuent和End。移动距离是相对开始计算的位置而言的,它是以字节为单位,如下面代码将会使文件指针移动到文件开始中的第20个字节的位置。

            byte [] mybyte=new byte[];
char [] mychar=new char[];
string path = @"C:\Users\Administrator\Desktop\51zxw.txt";
try
{
//定义文件流类 (对51zxw.txt ,文件操作模式打开或者新建,文件访问读和写)
FileStream mystream = new FileStream(path,FileMode.OpenOrCreate,FileAccess.ReadWrite);
//FIle 1种
//FileStream f1 = File.OpenRead(path);
//FileInfo 2种
//FileInfo fs2 = new FileInfo(path);
//文件流。查找(从0开始查找)
mystream.Seek(,SeekOrigin.Begin); //查找的同时写进缓冲区
//文件流.读取(读取到mybyte 从0开始,到mybyte总长度)FileStream 是字节流 必须用Byte[] 数组
mystream.Read(mybyte,,mybyte.Length);
//定义转码类 字节转换字符 =转换后。UTF8格式.将以编码的字节转换字符序列
Decoder dc = Encoding.UTF8.GetDecoder();
//字节数组解码成字符(mybyte,0开始,mybyte长度,解码成字符,清空解码器状态)
dc.GetChars(mybyte,,mybyte.Length,mychar,); Console.WriteLine(mychar);
Console.WriteLine("完成读取"); //赋值mychar
mychar = "努力学习天天向上".ToCharArray();
//转码 =转换后.UTF8格式.将字符串解码字节序列
Encoder mydc = Encoding.UTF8.GetEncoder();
//字符数组解码成字节(要解码的,0开始,mychar长度,产生的字节数组,0,true)
mydc.GetBytes(mychar,,mychar.Length,mybyte,,true);
//文件流。查找(0开始);
mystream.Seek(,SeekOrigin.Begin);
//文件流.写入(写入到mybyte,0开始,mybyte.总长度)
mystream.Write(mybyte,,mybyte.Length);
//关闭文件数据流
mystream.Close();
}
catch (Exception ex)
{ Console.WriteLine(ex.Message);
}
Console.Read();
}
}

实例

 class Program
{
static void Main(string[] args)
{
try
{
//读取
byte[] mybute = new byte[];
char[] mychar = new char[];
string path = @"C:\Users\Administrator\Desktop\51zxw.txt"; FileStream mystr = File.OpenRead(path);
mystr.Seek(, SeekOrigin.Begin);
mystr.Read(mybute, , mybute.Length);
Decoder dc = Encoding.UTF8.GetDecoder();
dc.GetChars(mybute, , mybute.Length, mychar, );
Console.WriteLine(mychar); //写入
mychar = "你好世界,世界你好".ToCharArray();
Encoder co = Encoding.UTF8.GetEncoder();
co.GetBytes(mychar, , mychar.Length, mybute, , true);
mystr.Seek(, SeekOrigin.Begin);//写入内部缓存区
mystr.Write(mybute, , mybute.Length); mystr.Close();
}
catch (Exception ex)
{ Console.WriteLine(ex.Message);
} Console.Read(); }
}

上述代码执行后 read可以读取,写入是不行的,要想写入 FileStream mystr=new FileStream(path,FileMode.OpenOrCreate,FileAccess.ReadWrite); 其中FileAccess 也可以不写,默认是读写功能

文件流FileStram类的更多相关文章

  1. .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化

    1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...

  2. 分享个 之前写好的 android 文件流缓存类,专门处理 ArrayList、bean。

    转载麻烦声明出处:http://www.cnblogs.com/linguanh/ 目录: 1,前序 2,作用 3,特点 4,代码 1,前序  在开发过程中,client 和 server 数据交流一 ...

  3. FileStream类的使用(文件流)

    1.什么是FileStream类 FileStream 类对文件系统上的文件进行读取.写入.打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道.标准输入和标准输出.读写操作可以指定为同步 ...

  4. C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)

    一.文件流 FileStream类主要用于读写磁盘文件.常用于向磁盘存储数据或读取配置文件. 读取文件: //文件流:读取 FileStream fileStream = File.Open(@&qu ...

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

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

  6. 文件流FileStream的读写

    1.FileStream文件流的概念: FileStream 类对文件系统上的文件进行读取.写入.打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道.标准输入和标准输出.读写操作可以指定 ...

  7. 12 文件流(Unity3D)

      关于文件操作在脚本中可以通过xml或其他的与文件相关的类中封装的一些方法可读取本地Asset文件夹下的xml文档和json文档到游戏中.但是这样操作文件难免会有拖延,C#提供了一种文件操作的方法, ...

  8. C++文件流类与文件流对象

    文件流是以外存文件为输入输出对象的数据流.输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据.每一个文件流都有一个内存缓冲区与之对应. 请区分文件流与文件的概念,不用误以为文件 ...

  9. C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

    迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...

随机推荐

  1. 用MVC5+EF6+WebApi 做一个小功能(三) 项目搭建

    一般一个项目开始之前都会有启动会,需求交底等等,其中会有一个环节,大讲特讲项目的意义,然后取一个高大上的项目名字,咱这是一个小功能谈不上项目,但是名字不能太小气了.好吧,就叫Trump吧.没有任何含义 ...

  2. uploadPreview 上传图片前预览 IE9 索引无效的问题

    最近公司的项目用到比较多的上传图片的操作,所以用到了基于jquery的上传前预览的插件 uploadPreview ,后来测试的时候发现在IE9下报索引无效的问题. 异常的产生方式 放一个file控件 ...

  3. RabbitMq初探——消息持久化

    消息持久化 前言 通过上一节,我们知道,有消息确认机制,保证了当消费者进程挂掉后,消息的不丢失. 但是如果rabbitmq挂掉呢?它的队列和消息都会丢失的.为了保证消息在rabbitmq挂掉重启后不丢 ...

  4. 在Gogland里对GO程序进行单元测试!

    单元测试在程序开发中具有很重要的作用! 1,可以保证程序代码的健壮,能够最小范围测试程序代码,从而保证程序的正确性! 2,可以通过单元测试代码快速了解当前的程序. 我在先前的几个软件公司工作时候,都对 ...

  5. java学习笔记—JDBC1(16)

    1.数据持久化 l  持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用,也称为“固化”.在大多数情况下,服务器或客户端应用中数据的持久化是通过关系型数据库来实现 l  存储 ...

  6. 2018-2019 20165219 网络对抗 Exp5 MSF基础

    实验内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一个针对浏览器的攻击,如ms ...

  7. “全栈2019”Java多线程第三章:创建多线程之实现Runnable接口

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  8. 【docker】docker下安装mysql

    1 拉取mysql镜像,采用网易加速地址docker pull hub.c.163.com/library/mysql:5.7 2 重命名镜像名docker tag hub.c.163.com/lib ...

  9. 设置跨交换机VLAN

    4台计算机,pc1 pc2 连接到交换机1的f1/1和f1/2.Pc3 pc4 连接到交换机2的f1/1和f1/2.pc1设置ip地址192.168.1.10,pc2 pc3 pc4设置ip地址192 ...

  10. max,min无法使用的问题

    遇到了包含algorithm头文件以后 min或max函数不能用的问题 改成__min和__max以后就可以了