c#Filestream类(文件流)
0、创建文件流几种方法:
File.Open("a.txt",FileMode.Create,FileAccess.ReadWrite);
File.OpenWrite("a.txt");
FileStream fsRead = File.OpenRead("a.txt");//默认只读

1、FileStream基本用法
#region FileStream文件流的使用方式
//1.创建一个 中国.txt
string txt = "中国是世界上人口第一大国。中国是世界上最幸福的国家之一。";
//一、创建一个文件流
FileStream fs = new FileStream(@"c:\中国.txt", FileMode.Create, FileAccess.Write);
byte[] buffer = Encoding.UTF8.GetBytes(txt);
//二、读文件或者写文件
//参数1:表示要把哪个byte[]数组中的内容写入到文件
//参数2:表示要从该byte[]数组的第几个下标开始写入,一般都是0
//参数3:要写入的字节的个数。
fs.Write(buffer, 0, buffer.Length);
////三、关闭文件流
////清空缓冲区
//fs.Flush();
//fs.Close();
//四、释放相关资源
fs.Dispose();//自动调用close和flush方法
Console.WriteLine("ok");
Console.ReadKey();
=================================================================
//1.创建一个 中国.txt
string txt = "中国是世界上人口第一大国。中国是世界上最幸福的国家之一。中国是四大文明古国之一。中国有个杨中科。";
//一、创建一个文件流
//当把一个对象放到using()中的时候,当超出using的作用于范围后,会自动调用该对象的Dispose()f方法。
using (FileStream fs = new FileStream(@"c:\中国.txt", FileMode.Create, FileAccess.Write))
{
byte[] buffer = Encoding.UTF8.GetBytes(txt);
//二、读文件或者写文件
//参数1:表示要把哪个byte[]数组中的内容写入到文件
//参数2:表示要从该byte[]数组的第几个下标开始写入,一般都是0
//参数3:要写入的字节的个数。
fs.Write(buffer, 0, buffer.Length);
}
Console.WriteLine("ok");
Console.ReadKey();
#endregion
2、文件copy
#region 使用文件流进行拷贝
string source = @"e:\全面回忆.rmvb";
string target = @"c:\全面回忆.rmvb";
CopyFile(source, target);
Console.WriteLine("ok");
Console.ReadKey();
#endregion
CopyFile方法实现
//文件拷贝
private static void CopyFile(string source, string target)
{
//1.创建一个读取源文件的文件流
using (FileStream fsRead = new FileStream(source, FileMode.Open, FileAccess.Read))
{
//获取原文件的大小
long len = fsRead.Length;
//2.创建一个写入新文件的文件流
using (FileStream fsWrite = new FileStream(target, FileMode.Create, FileAccess.Write))
{ //创建缓冲区
byte[] buffer = new byte[1024 * 1024 * 5];//更方便阅读5M //3.通过fsRead读取源文件,然后再通过fsWrite写入新文件 //通过文件流读取
//参数1:表示将来读取到的内容要存放到哪个数组中
//参数2:表示这个数据要从第几个索引开始填充数据、
//参数3:表示本次读取最多可以读取多少个字节。
//返回值:表示本次实际读取到的字节个数。
int byteCount = fsRead.Read(buffer, 0, buffer.Length);
while (byteCount > 0)
{
//把刚刚读取到的内容写入到新文件流中
fsWrite.Write(buffer, 0,byteCount);
double d = fsWrite.Position * 1.0 / len;
//需要循环执行读写操作 //把上次读取到内容写入完毕后,继续再读取
byteCount = fsRead.Read(buffer, 0, buffer.Length);
//fsRead.Position
//fsWrite.Position
Console.WriteLine("已经拷贝完毕了:{0}%", d * 100);
}
}
}
}
3、文件加密方法
private void CopyEncryptFile(string source, string target)
{
//读
using (FileStream fsRead = new FileStream(source, FileMode.Open, FileAccess.Read))
{
//写
using (FileStream fsWrite = new FileStream(target, FileMode.Create, FileAccess.Write))
{
//缓冲区
byte[] buffer = new byte[1024 * 1024 * 1];
int byteCount = fsRead.Read(buffer, 0, buffer.Length);
//这个应该写在循环里面
//========================加密==================================
for (int i = 0; i < byteCount; i++)
{
buffer[i] = (byte)(byte.MaxValue - buffer[i]);
}
//========================加密==================================
while (byteCount > 0)
{
fsWrite.Write(buffer, 0, byteCount);
byteCount = fsRead.Read(buffer, 0, buffer.Length);
}
}
}
}
c#Filestream类(文件流)的更多相关文章
- FileStream读写文件流
用FileStream 读取文件流并显示给文件内容 string p = @"C:\Users\Administrator\Desktop\1.txt"; FileStream f ...
- .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化
1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...
- FileStream类的使用(文件流)
1.什么是FileStream类 FileStream 类对文件系统上的文件进行读取.写入.打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道.标准输入和标准输出.读写操作可以指定为同步 ...
- 流(Stream)与文件流(FileStream)
//通过流的方式添加 StreamWriter writer = new StreamWriter(@"C:\A\ca.txt", true, Encoding.Default); ...
- 文件读写(三)利用FileStream类操作字节数组byte[]、BinaryFormatter、内存流MemoryStream
一.Stream类概述 在.NET Framework中,文件和流是有区别的.文件是存储在磁盘上的数据集,它具有名称和相应的路径.当打开一个文件并对其进行读/写时,该文件就称为流(stream).但是 ...
- 02-大文件Copy(FileStream文件流类)
static void Main(string[] args) { string source = @"e:\1.exe";//要移动文件的路径 大文件 string target ...
- C# Path类 FileStream(文件流) 与 File(文件) 读取的区别
1.采用文件流读取数据是一点一点从文件中读取数据对内存的压力相对较小;而采用文件读取数据是一下全部读取过来对内存造成的压力相对较大 2.File读取: string str = @"E:\Q ...
- 文件夹和文件、Path类、流、序列化
循环访问目录树 参考: http://msdn.microsoft.com/zh-cn/library/bb513869.aspx 循环访问目录树”的意思是在指定的根文件夹下,访问每个嵌套子目录中任意 ...
- 文件流FileStram类
本节课主要学习三个内容: 创建FileStram流 读取流 写入流 文件流FileStram类,是用来实现对文件的读取和写入.FileStram是操作字节的字节数组,当提供向文件读取和写入字节的方法时 ...
随机推荐
- C程序设计语言(2)文摘
第一章 导言 1.1 入门 1.2 变量与算术表达式 1.3 for语句 1.4 符号常量 1.5 字符输入输出 #include "stdafx.h" main(int argc ...
- web.xml配置中的log4jRefreshInterval讲解
采用spring框架的项目如何使用log4j在spring中使用log4j,有些方便的地方, 1.动态的改变记录级别和策略,即修改log4j.properties,不需要重启web应用,这需要在web ...
- RocketMQ runbroker.sh 分析JVM启动参数
runbroker.sh #====================================================================================== ...
- 3D 相关
1. STL 2. AMF 3. X3D 网址: http://www.web3d.org/x3d-resources/content/examples/X3dResources.html
- php CI框架输出空行问题排查
今天在使用 curl 命令行工具调试一个功能时,发现输出的内容总是会在最开始莫名其妙的多一行空行: 项目框架是 php 的 CodeIgniter,感觉这种问题在网上不好查找,因为可以确定这个是业务出 ...
- 深水划水队项目---七天冲刺之day5
站立式会议: 因为今天有成员回家,不能进行线下站立式会议,只能线上进行语音聊天 工作进度: 昨天完成的任务: 游戏功能的基本实现 商讨出如何实现游戏中的难度选择功能与道具功能 商讨出站立式会议能线下 ...
- tomcat下manager配置
1 安装Tomcat前需要先安装JDK.安装Tomcat后测试Tomcat成功安装. Tomcat Manager是Tomcat自带的.用于对Tomcat自身以及部署在Tomcat上的应用进行管理的w ...
- Oracle EBS FND User Info API
1. 与用户信息相关API PKG. --和用户处理有关的API FND_USER_PKG; --和用户密码处理有关的API FND_WEB_SEC; --和用户职责处理有关的API ...
- solr特点三: QueryElevation(编辑结果排序)
在理想的情况下,搜索引擎只返回与用户查询相关的文档.而在现实的查询中,编辑(没发现更合适的表达)通常需要指定特定文档在搜索结果中的特定位置.这样做有很多原因.或许 “置顶” 的文档就是最好的查询结果. ...
- c# 检查报错详细
catch (DbEntityValidationException error) { string test = string.Empty; foreach (var validationError ...