C#文件流的读与写

工作中遇到了文件的跨平台传送 运用了文件流 而且将计算机上的文件读取到程序内存里 反之将内存里的数据以文件的形式保存 都是比较常用的 在这里做一个简单的应用示例。

1 将内存数据“写”到计算机的文件里

const string path = @"D:\text.txt";//保存文件的路径
string content = "文件内容!!!!";//定义内存里的数据
byte[] bytes = Encoding.Default.GetBytes(content);//将转换成二进制数据 编码格式为Encoding.Default
int length = bytes.Length;//如果想把数据完整的写入 要写入的数据长度
using (FileStream stream = new FileStream(path, FileMode.Create))
{
  stream.Write(bytes, 0, length);//写入
}

2 将计算机文件里的数据“读”到内存里

const string path = @"D:\text.txt";//要读取数据的文件,已之前写入的文件为例
byte[] bytes;//创建读取结果的对象
using (FileStream stream = new FileStream(path, FileMode.Open))
{
  bytes = new byte[stream.Length];//可以确定读取结果的长度了
  stream.Read(bytes, 0, bytes.Length);//读操作
}
string result = Encoding.Default.GetString(bytes);//将读取的结果转换类型 编码格式与写入的编码格式最好一致 以防止出现乱码
Console.Write(result);

3 用文件流的“读”和“写”操作实现一个类似COPY的功能 打印COPY进度

string rPpath = @"D:\冰与火之歌:权力的游戏.Game.of.Thrones.2016.S06E03.HD720P.X264.AAC.CHS-ENG.DYTT.mp4";//我计算机的C盘存在这样一个视频
string wPath2 = @"E:\A.mp4";//我想把它写入到E盘
byte[] bytes;//定义一个需要写入和读取的容器 二进制类型
using (FileStream rStream = new FileStream(rPpath, FileMode.Open))
{
  bytes = new byte[rStream.Length];//全部读取
  rStream.Read(bytes, 0, bytes.Length);
}
using (FileStream wStream = new FileStream(wPath2, FileMode.Create))
{
  int num = bytes.Length / (1024 * 1024);//每次读取的大小为1MB
  for (int i = 0; i <= num; i++)
  {
    wStream.Write(bytes, 0, num);
    i++;
    Console.Write(Math.Round((i / (float)num), 2));//打印已读取的百分比
    Console.Write("\n");
  }
}

时间: 2024-10-01 04:36:15

C#文件流的读与写的相关文章

Python open()函数文件打开、读、写操作详解

一.Python open()函数文件打开操作 打开文件会用到open函数,标准的python打开文件语法如下:open(name[,mode[,buffering]])open函数的文件名是必须的,而模式和缓冲参数都是可选的.比如说有个a.txt的文本文件,存放在c:\text下,那么你要打开它可以这样操作:>>>x = open(r 'c:\text\a.txt')用读的模式打开这个路径下的对应文本文件,如果要打开对像不存在,程序会报错. 二.open()函数文件打开模式参数常用值有

Android 文件的可读可写

文件流形式的保存,获取: 设立文件的私有,可读,可写,公开: 效果图: /data/data中文件夹: 新建一个项目测试文件: 得到data/data,查看文件的特性:

[Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)

温馨提示 建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续本节内容. 1 现象描述 基于Android L版本源码环境进行开发时,根据项目需求,APP层需要操作sys/xxx 或 proc/xxx下面的文件结点,但是会报出以下权限异常,无法直接操作这些结点 LedLightFileUtil( 4671): java.io.FileNotFoundException: /sys/c

集合、深浅拷贝、文件操作(读、写、追加)函数初识(参数)

小数据池 #int ==比较数值 is 比较内存地址 id 测试内存地址 #str 不能含有特俗字符 单个元素*数字,不能超过21 i1 = 'a'*20 i = 'a'*20 id一样 i1 = 'a'*21 i = 'a'*21 id不一样 编码 ascii   英文的数字,字母,特殊字符 字节 8位表示一个字节 字符 内容的最小组成单位 abc  a一个字符 中国 中  一个字符 unicode :万国码 期初 两个字节,表示一个字符2**16不够用 升级 四个字节,表示一个字符2**32

C# 大文件复制边读边写

using (FileStream fsRead = new FileStream(@"D:\Names.txt", FileMode.Open)) { using (FileStream fsWrite = new FileStream(@"d:\temp.txt", FileMode.Create)) { byte[] arr = new byte[200]; //记录到底读取了多少字节的数据 int count = 0; while (fsRead.Posit

c#的FileStream文件流

文件流 FileStream.StreamReader和StreamWriter可以操作大文件; FileStream 操作字节;可以操作任何类型的文件: StreamReader和StreamWriter操作字符; FileStream 方法名 作用 参数 FileStream() 创建FileStream对象 第一个是路径,第二个是文件模式FIleMode枚举,第三个数据模式FileAcess Read() 分部分读取文件,返回实际读到的有效字节数,如果读得数量不是第三个参数指定的,就用空填

C++中输入输出流及文件流操作笔记

1.流的控制 iomanip          在使用格式化I/O时应包含此头文件.    stdiostream   用于混合使用C和C + +的I/O机制时,例如想将C程序转变为C++程序 2.类继承关系 ios是抽象基类,由它派生出istream类和ostream类, iostream类支持输入输出操作,iostream类是从istream类和ostream类通过多重继承而派生的类 类ifstream继承了类istream,类ofstream继承了类ostream,类fstream继承了

路径、装箱拆箱、文件流、多态

1.绝对路径和相对路径 绝对路径:通过给定的这个路径直接能在我的电脑中找到这个文件. 相对路径:文件相对于应用程序的路径. 结论: 我们在开发中应该去尽量的使用相对路径. 2.装箱.拆箱 装箱:就是将值类型转换为引用类型. 拆箱:将引用类型转换为值类型. 看两种类型是否发生了装箱或者拆箱,要看,这两种类型是否存在继承关系. 3.将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的资源. 4.实现多态的手段 1).虚方法 步骤: 1.将父类的方法标记为虚方法 ,使用关键字 vi

.Net学习笔记----2015-06-25(文件流FileStream)

文件流 将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的资源 //FileStream 操作字节的 //StreamReader和StreamWriter 操作字符的 FileStream fsRead = new FileStream(@"C:\Users\Administrator\Desktop\new.txt", FileMode.OpenOrCreate, FileAccess.Read); byte[] buffer = new byte[1024