小的文本文件(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#进行文件读写的方法选择总结的更多相关文章

  1. 【Win 10 应用开发】文件读写的三种方案

    本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧 ...

  2. python笔记2 生成器 文件读写

    生成器 一边循环一边计算的机制,称为生成器(Generator). 把一个列表生成式的[]改成(),就创建了一个generator: 创建了一个generator后,通过for循环来迭代它. 著名的斐 ...

  3. 在.net中读写config文件的各种方法

    阅读目录 开始 config文件 - 自定义配置节点 config文件 - Property config文件 - Element config文件 - CDATA config文件 - Collec ...

  4. 【转】 Linux内核中读写文件数据的方法--不错

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法  有时候需要在Linuxkernel--大 ...

  5. Spring中利用applicationContext.xml文件实例化对象和调用方法

    Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘,链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q 提取码: ...

  6. 在.net中读写config文件的各种方法(自定义config节点)

    http://www.cnblogs.com/fish-li/archive/2011/12/18/2292037.html 阅读目录 开始 config文件 - 自定义配置节点 config文件 - ...

  7. 在.net中读写config文件的各种方法【转】

    今天谈谈在.net中读写config文件的各种方法. 在这篇博客中,我将介绍各种配置文件的读写操作. 由于内容较为直观,因此没有过多的空道理,只有实实在在的演示代码, 目的只为了再现实战开发中的各种场 ...

  8. Python 3 读写文件的简单方法!

    Python 3 读写文件的简单方法! a = open('test.txt','w') 这行代码创建了一个名为test的文本文档,模式是写入(模式分为三种,w代表写入,r代表阅读,a代表在尾行添加) ...

  9. Py之Crawler:爬虫利用随机选取代理访问服务器的方法实现下载某网址上所有的图片到指定文件夹——Jason niu

    #Py之Crawler:爬虫利用随机选取代理访问服务器的方法实现下载某网址上所有的图片到指定文件夹 import urllib.request import os import random def ...

随机推荐

  1. Git 命令及使用经验

    手册中的基本命令: CONFIGURE TOOLING Configure user information for all local repositories $ git config --glo ...

  2. 20155207 2006-2007-2 《Java程序设计》第4周学习总结

    20155207 2006-2007-2 <Java程序设计>第4周学习总结 教材学习内容总结 ISP原则:一个类对另一个类的依赖应该限制在最小化的接口上. OCP原则:软件构成(类,模块 ...

  3. 20155216 2016-2017-2 《Java程序设计》第十周学习总结

    20155216 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 了解计算机网络基础 概念 计算机网络基础,是指将地理位置不同的具有独立功能的多台计算机及其外 ...

  4. 实验一 Java开发环境的熟悉(Linux+Eclipse)

    实验一 Java开发环境的熟悉(Linux+Eclipse) 实验内容及步骤 使用JDK编译.运行简单的Java程序 打开windows下的cmd → 输入cd Code命令进入Code目录 → 输入 ...

  5. 20155231 2016-2017-2 《Java程序设计》第1周学习总结

    20155231 2016-2017-2 <Java程序设计>第1周学习总结 考核方式学习 课前准备 教材学习内容总结 第一章 Java平台概论 了解java 通过学习了解到,java设计 ...

  6. 第五周 mybash的实现

    第五周 mybash的实现 1. 使用fork,exec,wait实现mybash 2. 写出伪代码,产品代码和测试代码 3. 发表知识理解,实现过程和问题解决的博客(包含代码托管链接) 1. for ...

  7. 20145234黄斐《网络对抗技术》PC平台逆向破解

    Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址. ...

  8. 【NOIP2018】提高组题解

    [NOIP2018]提高组题解 其实就是把写过的打个包而已 道路铺设 货币系统 赛道修建 旅行 咕咕咕 咕咕咕

  9. [WC2010]重建计划 长链剖分

    [WC2010]重建计划 LG传送门 又一道长链剖分好题. 这题写点分治的人应该比较多吧,但是我太菜了,只会长链剖分. 如果你还不会长链剖分的基本操作,可以看看我的长链剖分总结. 首先一看求平均值最大 ...

  10. Python数据分析开发环境

    准备工作 下载并安装最新版本的Anaconda 下载并安装最新版本的Visual Studio Code 编辑器 Tips: 可以选择自己喜欢并且熟悉的编辑器或IDE.如:VIM.Emacs.Note ...