C#的几种文件操作方法
创建或覆盖文件
需求:如果文件不存在,创建之,如果存在,覆盖之。
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#的几种文件操作方法的更多相关文章
- 解析XML文件的几种常见操作方法—DOM/SAX/DOM4j
解析XML文件的几种常见操作方法—DOM/SAX/DOM4j 一直想学点什么东西,有些浮躁,努力使自己静下心来看点东西,哪怕是回顾一下知识.看到了xml解析,目前我还没用到过.但多了解一下,加深点记忆 ...
- C#File类常用的文件操作方法(创建、移动、删除、复制等)
File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件. File类方法的参量很多时候都是路径path ...
- Linux下几种文件传输命令 sz rz sftp scp
Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...
- [原创] Linux下几种文件传输命令 sz rz sftp scp介绍
Linux下几种文件传输命令 sz rz sftp scp介绍 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等 ...
- Objective-C:三种文件导入的方式以及atomic和nonatomic的区别
一.三种文件导入的方式比较: 类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义 ...
- JSP下载txt 和 Excel两种文件
JSP下载txt 和 Excel两种文件 jsp 下载txt文件和excel文件 jsp 下载txt文件和excel文件 最近做了个用jsp下载的页面 将代码贴出来 权作记录吧 1 下载txt文件 ...
- *.pro、*.pri、*.prf、*.prl等四种文件
尽管每次和cmake对比起来,我们总是说 qmake 简单.功能少.但是qmake仍然是一个非常复杂的东西,我想大多人应该和我一样吧: 不是太清楚CONFIG等变量到底如何起作用的 用过的qmak ...
- [QT]简单介绍一下 *.pro、*.pri、*.prf、*.prl等四种文件
转自:http://blog.csdn.net/dbzhang800/article/details/6348432 简单介绍一下 *.pro.*.pri.*.prf.*.prl等四种文件:干嘛用的, ...
- UnityEditor下文件操作方法汇总(Unity3D开发之二十四)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/50595585 ...
随机推荐
- spring注解开发AnnotationConfigApplicationContext的使用
说明 使用AnnotationConfigApplicationContext可以实现基于Java的配置类加载Spring的应用上下文.避免使用application.xml进行配置.相比XML配置, ...
- tcp与ip协议的区别
TCP/IP(TransmissionControlProtocol/InternetProtocol的简写,中文译名为传输控制协议/互联网络协议). 简单地说,就是由底层的IP协议和TCP协议组成的 ...
- SpringMVC 手动控制事务提交 【转】
1.配置文件 applicationContext.xml: <bean id="txManager" class="org.springframework.jdb ...
- JavaScript 判断对象中是否有某属性
判断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式. 一.点( . )或者方括号( [ ] ) 通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined. ...
- Vue过滤器使用
格式(一个过滤器):{{ 'msg' | filterA }} (多个过滤器):{{ 'msg' | filterA | filterB }} window.onload =function(){ / ...
- 强大而灵活的的Html解析器——Html Agility Pack
一.概述 Html Agility Pack 简称HAP,是一个强大而灵活的解析Html DOM的.Net类库. 二.官方链接 官网:http://html-agility-pack.net/ NuG ...
- js |竖线字符串全部替换 replace
一般人解决方案: 'a|b|c'.replace(/\|/g, ','); 神经病解决方案: 'a|b|c'.split('|').join(',');
- 一个二维码-->网址-->iOS/Android跳转
view-source:https://dpx.shopo.com.cn/down.html lmxmn117:~ will.wei$ curl https://dpx.shopo.com.cn/do ...
- centos 7.5+如何格式化硬盘
[root@k8s-node2 ~]# fdisk -l Disk /dev/sdb: bytes, sectors Units = sectors of * = bytes Sector size ...
- 【JAVA】反射总结
反射是什么? 反射就是指程序在运行的时候可以知道一个类的自身信息. 自身信息有哪些:类方法.属性.成员变量.构造方法.包等 动态编译和静态编译 静态编译:在编译的时候进确定类型,如果绑定对象成功,n ...