创建或覆盖文件

需求:如果文件不存在,创建之,如果存在,覆盖之。

1,可能有问题的方法

using (FileStream fs = File.OpenWrite(@"d:\work\1.txt")) {

    byte[] toBytes = Encoding.UTF8.GetBytes("");
fs.Write(toBytes, , toBytes.Length);
}

这个方法不会清空已存在文件的内容,如果源文件的内容比后写入的内容长,那么这些长的内容会被保留,这通常不是我们想要的结果。

2,正确的方法

using (FileStream fs = File.Create(@"d:\work\1.txt")) {
byte[] toBytes = Encoding.UTF8.GetBytes("");
fs.Write(toBytes, , toBytes.Length);
}

唯一的不同就是把File.OpenWrite改成了File.Create,如果文件已经存在,那么其内容会被清空。

3,方法2的简化版

File.WriteAllBytes(@"d:\work\1.txt", Encoding.UTF8.GetBytes(""));

4,方法2的文本版

using (StreamWriter sw = File.CreateText(@"d:\work\1.txt")) {
sw.Write("");
}

5,方法4的简化版

File.WriteAllText(@"d:\work\1.txt", "");

读文件

1,正常读

byte[] buff = new byte[]; //假设文件不超过1KB
using(FileStream fs = File.OpenRead(@"d:\work\1.txt")) {
int len = fs.Read(buff, , );
string content = Encoding.UTF8.GetString(buff, , len);
Console.WriteLine(content);
}

2,读文本文件

using (StreamReader sr = File.OpenText(@"d:\work\1.txt")) {
string content = sr.ReadToEnd();
Console.WriteLine(content);
}

3,方法2的简化版

string content = File.ReadAllText(@"d:\work\1.txt");

追加

1,正常追加

using (FileStream fs = File.Open(@"d:\work\1.txt", FileMode.Append, FileAccess.Write)) {
byte[] toWrite = Encoding.UTF8.GetBytes("123123\r\n");
fs.Write(toWrite, , toWrite.Length);
}

2,追加文本

using (StreamWriter sw = File.AppendText(@"d:\work\1.txt")) {
sw.Write("123123\r\n");
sw.WriteLine(""); //与上面语句等价
}

C#的几种文件操作方法的更多相关文章

  1. 解析XML文件的几种常见操作方法—DOM/SAX/DOM4j

    解析XML文件的几种常见操作方法—DOM/SAX/DOM4j 一直想学点什么东西,有些浮躁,努力使自己静下心来看点东西,哪怕是回顾一下知识.看到了xml解析,目前我还没用到过.但多了解一下,加深点记忆 ...

  2. C#File类常用的文件操作方法(创建、移动、删除、复制等)

    File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件. File类方法的参量很多时候都是路径path ...

  3. Linux下几种文件传输命令 sz rz sftp scp

    Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...

  4. [原创] Linux下几种文件传输命令 sz rz sftp scp介绍

    Linux下几种文件传输命令 sz rz sftp scp介绍 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等 ...

  5. Objective-C:三种文件导入的方式以及atomic和nonatomic的区别

    一.三种文件导入的方式比较:   类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义 ...

  6. JSP下载txt 和 Excel两种文件

    JSP下载txt 和 Excel两种文件 jsp 下载txt文件和excel文件   jsp 下载txt文件和excel文件 最近做了个用jsp下载的页面 将代码贴出来 权作记录吧 1 下载txt文件 ...

  7. *.pro、*.pri、*.prf、*.prl等四种文件

      尽管每次和cmake对比起来,我们总是说 qmake 简单.功能少.但是qmake仍然是一个非常复杂的东西,我想大多人应该和我一样吧: 不是太清楚CONFIG等变量到底如何起作用的 用过的qmak ...

  8. [QT]简单介绍一下 *.pro、*.pri、*.prf、*.prl等四种文件

    转自:http://blog.csdn.net/dbzhang800/article/details/6348432 简单介绍一下 *.pro.*.pri.*.prf.*.prl等四种文件:干嘛用的, ...

  9. UnityEditor下文件操作方法汇总(Unity3D开发之二十四)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/50595585 ...

随机推荐

  1. BaiduMap路程计算

    #BaiduMap路程计算def getDistance(deslat,deslng,originlat,originlng): url='http://api.map.baidu.com/direc ...

  2. 关于Java中构造方法的问题以及回答

    构造方法 概念: 又叫 构造器,区分于传统的方法,是一个在创建对象时被系统自动调用的特殊方法 作用: 一:为对象进行初始化(成员变量)的工作 二:为对象在堆内存中开辟独立的内存空间 定义格式: 访问修 ...

  3. 【算法】BILSTM+CRF中的条件随机场

    BILSTM+CRF中的条件随机场 tensorflow中crf关键的两个函数是训练函数tf.contrib.crf.crf_log_likelihood和解码函数tf.contrib.crf.vit ...

  4. EndNote中文文献导入出错和数量限制解决

    发现之前记录的存在忽略,把存在的一个重要问题遗漏了,Endnote中文文献导入无法导入,软件奔溃问题,现在在原先基础上补上(补到最后): ..一路绿色φ(>ω<*) φ(>ω< ...

  5. QT安装后再添加或删除组件

    QT安装目录下打开MaintenanerceTool.exe 手动添加​储存库,要定位一个储存有QT在线安装镜像的网址: https://download.qt.io/online/qtsdkrepo ...

  6. eclipse 的缓存问题

    写这篇文章 如果能带给你帮助 不胜荣幸 ,如果有问题和其他的见解 也欢迎批评指正.只要不进行人身攻击都好说. 今天的用eclipse(sts)写项目时候发生了很多缓存事情(也可能不是缓存).最后解决的 ...

  7. .net core 接口返回图片并且进行压缩

    背景:  .net core 中默认已经取消可以直接访问图片,因为这样不安全. 导致我们上传的图片无法直接通过url访问. 解决方案:  一: 通过修改项目配置,使可以直接通过url访问.(方法略,可 ...

  8. PHP如何处理emoji表情存入utf8的数据库

    一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.这是怎么回事呢? 原来是因为Mysql的utf8字符集是3字节的,而em ...

  9. PyQt5目录

    记录下学习PyQt5的经过,方便以后查找. Offical website : https://www.riverbankcomputing.com QMainWindow : http://www. ...

  10. python 将png图片格式转换生成gif动画

    先看知乎上面的一个连接 用Python写过哪些[脑洞大开]的小工具? https://www.zhihu.com/question/33646570/answer/157806339 这个哥们通过爬气 ...