[转载]对文件流进行操作
对流进行操作时要引用 using System.Text; 命名空间
FileStream常用的属性和方法:
属性:
CanRead 判断当前流是否支持读取,返回bool值,True表示可以读取
CanWrite 判断当前流是否支持写入,返回bool值,True表示可以写入
方法:
Read() 从流中读取数据,返回字节数组
Write() 将字节块(字节数组)写入该流
Seek() 设置文件读取或写入的起始位置
Flush() 清除该流缓冲区,使得所有缓冲的数据都被写入到文件中
Close() 关闭当前流并释放与之相关联的所有系统资源
文件的访问方式:(FileAccess)
包括三个枚举:
FileAccess.Read(对文件读访问)
FileAccess.Write(对文件进行写操作)
FileAccess.ReadWrite(对文件读或写操作)
文件打开模式:(FileMode)包括6个枚举
FileMode.Append 打开现有文件准备向文件追加数据,只能同FileAccess.Write一起使用
FileMode.Create 指示操作系统应创建新文件,如果文件已经存在,它将被覆盖
FileMode.CreateNew 指示操作系统应创建新文件,如果文件已经存在,将引发异常
FileMode.Open 指示操作系统应打开现有文件,打开的能力取决于FileAccess所指定的值
FileMode.OpenOrCreate 指示操作系统应打开文件,如果文件不存在则创建新文件
FileMode.Truncate 指示操作系统应打开现有文件,并且清空文件内容
文件共享方式:(FileShare)
FileShare方式是为了避免几个程序同时访问同一个文件会造成异常的情况。
文件共享方式包括四个:
FileShare.None 谢绝共享当前文件
FileShare.Read 充许别的程序读取当前文件
FileShare.Write 充许别的程序写当前文件
FileShare.ReadWrite 充许别的程序读写当前文件
使用FileStream类创建文件流对象:
FileStream(String 文件路径,FileMode 文件打开模式)
FileStream(String 文件路径,FileMode 文件打开模式,FileAccess 文件访问方式)
FileStream(String 文件路径,FileMode 文件打开模式,FileAccess 文件访问方式,FileShare 文件共享方式)
例:
//在C盘创建a.txt文件,使用fs流对象对文件进行操作,fs的工作模式是新建(FileMode.Create)
FileStream fs=new FileStream(@"c:a.txt",FileMode.Create);
//在C盘创建a.txt文件,使用fs流对象对文件进行操作,fs工作模式是新建(FileMode.Create)文件的访问模式是写入(Fileaccess.Write)
FileStream fs=new FileStream(@"c:a.txt",FileMode.Create,FileAccess.Write);
//在C盘创建a.txt文件,使用fs流对象对文件进行操作,fs工作模式是新建(FileMode.Create)文件的访问模式是写入(FileAccess.Write)文件的共享模式是谢绝共享(FileShare.None)
FileStream fs=new FileStream(@"c:a.txt",FileMode.Create,FileAccess.Write,FileShare.None);
使用File类来创建对象:(常用)
自定义打开文件的方式:File.Open(String,FileMode);
打开文件进行读取: File.OpenRead(String);
打开文件进行写入: File.OpenWrite(String);
示例如下:
//在C盘新建123.txt文件,使用流对象fs对文件进行操作,fs可以行文件内容追加操作FileMode.Append
FileStream fs=File.Open(@"c:123.txt",FileMode.Append);
//在C盘新建123.txt文件,使用流对象fs对文件进行操作,fs可以进行读文件File.OpenRead()
FileStream fs=File.OpenRead(@"c:123.txt");
//在C盘新建123.txt文件,使用流对象fs对文件进行操作,fs可以进行写操作File.OpenWrite()
FileStream fs=File.OpenWrite(@"c:123.txt");
使用File例:
对文件进行读操作:
//新建fs流对象对象产生的路径是textbox1.text的值,文件的模式是FileMode.OpenOrCreate(可读可写)
using (FileStream fs = File.Open(textBox1.Text, FileMode.OpenOrCreate))
{
//新建字节型数组,数组的长度是fs文件对象的长度(后面用于存放文件)
byte[] bt=new byte[fs.Length];
//通过fs对象的Read方法bt得到了fs对象流中的内容
fs.Read(bt,0,bt.Length);
//关闭fs流对象
fs.Close();
//将bt字节型数组中的数据由Encoding.Default.GetString(bt)方法取出,交给textbox2.text
textBox2.Text = System.Text.Encoding.Default.GetString(bt);
}
对文件进行写入操作:
//新建fs流对象,对象操作的文件路径在textbox1.text中,fs的操作模式是FileMode.Create
using (FileStream fs = File.Open(textBox1.Text, FileMode.Create))
{
//新建字节型数组bt对象,bt对象得到了textbox2.text的Encoding的值
byte[] bt = System.Text.Encoding.Default.GetBytes(textBox2.Text);
//将bt字节型数组对象的值写入到fs流对象中(文件)
fs.Write(bt,0,bt.Length);
//关闭流对象
fs.Close();
}
注:
对文件的读写操多不管代码有多少,无非就是下面的三步:
1.创建文件读写流对象
2.对文件进行读写
3.关闭文件流
[转载]对文件流进行操作相关推荐
- java中有关文件流的操作
文件流: 顾名思义,程序和文件打交道. 此时我们谈及的文件,值得是纯文本文件(txt的,不要使用Word,Excel), 在字节流中,暂时不要使用中文. FileInputStream: 文件的字节输 ...
- java中pdf写成base64文件流,Java操作pdf文件与Base64编码相互转换与文件流操作
1.第一步,引入bc包的安装依赖. 在pom.xml中引入. org.bouncycastle bcprov-jdk15on 1.60 引入后reimport一下项目. 2.pdf文件转换成Base6 ...
- 浅谈C/C++文件流的操作
转自:微点阅读 https://www.weidianyuedu.com/content/3417507553653.html C/C++文件流 文件流是以外存文件为输入/输出对象的数据流.输出文件 ...
- java 写文件 高效_java高效文件流读写操作详解|chu
导语 防止自己以后忘记,记录一些文件流的性能对比. 平常经常会操作到文件读写,java当中提供了许多操作文件的类,一般来说,文件操作也叫流操作,可以按照以下方式分类:按照功能分类,字节流和字符流. 按 ...
- java接收文件流并操作文件流
1.controller层 @PostMapping("/upload")public Resp upload(@RequestParam MultipartFile multip ...
- C# 文件流相关操作
二进制转换成图片: MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream(m ...
- java文件流的操作
2019独角兽企业重金招聘Python工程师标准>>> //读取二进制文件 public static void ReadBinaryFile() { System.out.p ...
- C++ 流的操作 | 初识IO类、文件流、string流的使用
文章目录 前言 IO头文件 iostream fstream sstream 流的使用 不能拷贝或对 IO对象 赋值 条件状态与 iostate 类型 输出缓冲区 文件流 fstream类型 文件模式 ...
- 【Delphi入门】文件系统(文件分类 文件文本变量 文件操作 文件流操作)
文件分类 文本文件(TextFile) & 二进制文件(Flie) 二进制形式存放数据占有存储空间较少,但不直观:文本文件与之相反 文件是由相同类型的数据元素组成的序列.在DELPHI中对文件 ...
最新文章
- IE6与其他浏览器的区别
- 电气论文实现: 考虑储能和可再生能源误差的售电公司购售电策略( 有代码数据)
- 数据分析与挖掘-python常用数据探索函数
- Android中异步任务AsyncTask的使用
- 全国英语计算机9月统考2019,2019年9月网络教育统考《计算机应用基础》模拟题6...
- 架构解读丨Volcano作业资源预留设计原理
- Given two binary trees, write a function to check if they areequal or not.
- SQLMAP 脱库过程(get请求)
- 金蝶K3修改核算项目锁定字段的默认长度(以物料主数据的助记码为例)
- OpenCV玩九宫格数独(一)——九宫格图片中提取数字
- 目标跟踪VOT2016的配置
- Taq DNA聚合酶的种类与应用现状
- 工业路由器的端口映射方法 NAT/DMZ/UPNP
- 如何将彩色文本打印到终端?
- 改进的节点分析法(Modified Nodal Analysis)
- VTK笔记-CT图像获取皮肤等值面-vtkContourFilter类的使用
- 小程序页面卡顿解决问题
- 数字基带调制解调matlab仿真,数字通信系统课程设计--基于MATLAB数字基带调制.doc...
- 【项目自动发布】基于Docker/单节点Rancher/GitLab搭建简易的CI/CD流水线(备忘+补充完善)
- 蚂蚁《c++.模拟》
热门文章
- 《从0到1》笔记 第十章 打造帮派文化
- 关于draw.io怎么改中文字体
- ESP32-C3入门教程 问题篇④——SHA-256 comparison failed, Attempting to boot anyway... entry 0x403ce000 无限重启
- mysql 临时表 会话级_会话级临时表
- AMFPHP在64位机上无法正确转换负数
- HTML学习12 js-DOM
- 游戏服务器AOI兴趣点算法原理--四叉树与九宫格 (golang)
- 网络管理员不惜代价都要避免的10个坏习惯
- ARM汇编循环——100以内等差数列求和
- NFC开发 —————ID卡、IC卡(M1卡、CPU卡)的区别(三)