利用C#进行文件读写的方法选择总结
小的文本文件(100M以下)直接用File类的ReadAllText()和WriteAllText()方法
这两个方法内部其实就是封装了StreamReader类的ReadToEnd()和StreamWriter类的WriteToEnd(),
这两个方法的返回值都是string类型,所以只能读写文本文件
小的文本文件的单行读写用StreamReader和StreamWriter这两个类
小的非文本文件用File类的ReadAllBytes()和WriteAllBytes()读写,并用byte[]作中转站
这两个方法内部其实就是封装了FileStream的Read()和Write()方法,
这两个方法的返回值都是byte数组,所以可以读写任何文件
大文件
但File读写特大文件是会出错的,因为它虽然本质上用的是FileStream来读写,但是它的byte[]大小是写死了的(就是被读写文件的大小),所以它是将文件一次性全部读取或写入,文件非常大的时候往往会造成内存溢出
所以要用数据流FileStream,因为我们可以自由定义byte[]的大小,来保证内存不会溢出
一般而言,读文件用FileMode.Open,写文件用FileMode.Create
FileStream的Position属性是一个指针,标记文件流当前读写的位置
代码实现:
using (FileStream fsRead = new FileStream(@"D:\Names.txt", FileMode.Open))
{
using (FileStream fsWrite = new FileStream(@"d:\temp.txt", FileMode.Create))
{
byte[] arr = new byte[];
//记录到底读取了多少字节的数据
int count = ;
while (fsRead.Position < fsRead.Length)
{
//每一次读取,。返回真正读取到的字节数,用count记录(最后一次读取后可能count可能会小于200)
count = fsRead.Read(arr, , arr.Length);
//将数组中的数据写入到指定的文件
fsWrite.Write(arr, , count);
}
}
MessageBox.Show("ok");
}
总结:
首先看文件大小——如果是大文件则用FileStream,如果是小文件则看是否是文本文件——非文本文件则用File类的ReadAllBytes/WriteAllBytes,是文本文件则看是否是单行读写——是则用StreamReader类/StreamWriter类,不是则用File类的ReadAllText/WriteAllText
另,任意类型的文件都可以用FileStream来读写
利用C#进行文件读写的方法选择总结的更多相关文章
- 【Win 10 应用开发】文件读写的三种方案
本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧 ...
- python笔记2 生成器 文件读写
生成器 一边循环一边计算的机制,称为生成器(Generator). 把一个列表生成式的[]改成(),就创建了一个generator: 创建了一个generator后,通过for循环来迭代它. 著名的斐 ...
- 在.net中读写config文件的各种方法
阅读目录 开始 config文件 - 自定义配置节点 config文件 - Property config文件 - Element config文件 - CDATA config文件 - Collec ...
- 【转】 Linux内核中读写文件数据的方法--不错
原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法 有时候需要在Linuxkernel--大 ...
- Spring中利用applicationContext.xml文件实例化对象和调用方法
Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘,链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q 提取码: ...
- 在.net中读写config文件的各种方法(自定义config节点)
http://www.cnblogs.com/fish-li/archive/2011/12/18/2292037.html 阅读目录 开始 config文件 - 自定义配置节点 config文件 - ...
- 在.net中读写config文件的各种方法【转】
今天谈谈在.net中读写config文件的各种方法. 在这篇博客中,我将介绍各种配置文件的读写操作. 由于内容较为直观,因此没有过多的空道理,只有实实在在的演示代码, 目的只为了再现实战开发中的各种场 ...
- Python 3 读写文件的简单方法!
Python 3 读写文件的简单方法! a = open('test.txt','w') 这行代码创建了一个名为test的文本文档,模式是写入(模式分为三种,w代表写入,r代表阅读,a代表在尾行添加) ...
- Py之Crawler:爬虫利用随机选取代理访问服务器的方法实现下载某网址上所有的图片到指定文件夹——Jason niu
#Py之Crawler:爬虫利用随机选取代理访问服务器的方法实现下载某网址上所有的图片到指定文件夹 import urllib.request import os import random def ...
随机推荐
- 在.net core中使用Thrift
Thrift应用比较广泛,这里不介绍Thrift的基本概念和使用.Thrift对.net支持的很好,但自从.net core诞生引来,我曾多次关注Thrift的官方网站,看看对.net core是否提 ...
- 20155327 2016-2017-3 《Java程序设计》第4周学习总结
20155327 2016-2017-3 <Java程序设计>第4周学习总结 教材学习内容总结 一. 理解封装.继承.多态的关系 封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方 ...
- 20155332 2006-2007-2 《Java程序设计》第3周学习总结
学号 2006-2007-2 <Java程序设计>第3周学习总结 教材学习内容总结 尽量简单的总结一下本周学习内容 尽量不要抄书,浪费时间 看懂就过,看不懂,学习有心得的记一下 教材学习中 ...
- debug 调试原理理解
引言: 昨天,看了一篇文章,很受启发,记得之前听别的人远程调试过代码,觉得很神奇,在自己程序里打断点,连接远程服务器,开启调试后可以调用远程方法来看数据的输入和输出,不需要查找问题,重新部署,测试问题 ...
- MySQL 安装 + Windows7
Window版本 1.下载 http://dev.mysql.com/downloads/mysql/ 2.解压 如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:D:\m ...
- virsh常用维护命令
virsh常用命令 一些常用命令参数 [root@kvm-server ~]# virsh --help #查看命令帮忙 [ro ...
- bzoj1861 书架
bzoj1861 书架 原题链接 神题... 先吐槽洛谷的样例 10 10 1 3 2 7 5 8 10 4 9 6 Query 3 Top 5 Ask 6 Bottom 3 Ask 3 Top 6 ...
- javaweb(三十三)——使用JDBC对数据库进行CRUD
一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...
- python-前方高能-面向对象-进阶3
面向对象 你写代码的时候 什么时候用面向对象 代码量大,功能多的时候 处理比较复杂的角色之间的关系 qq 好友 陌生人 群 组 复杂的电商程序 公司/学校的人事管理/功能的系统 我的代码的清晰度更高了 ...
- Java or Python?测试开发工程师如何选择合适的编程语言?
很多测试开发工程师尤其是刚入行的同学对编程语言和技术栈选择问题特别关注,毕竟掌握一门编程语言要花不少时间成本,也直接关系到未来的面试和就业(不同企业/项目对技术栈要求也不一样),根据自身情况做一个相对 ...