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 ...
随机推荐
- Docker动态给容器Container暴露端口
查看Container的IP地址 docker inspect <container name or id>| grep IPAddress 查看Container的映射的端口 docke ...
- 树链剖分——边权poj2763
边权操作起来也和点权一样,只要把边的权值映射到点上即可,要注意的地方是向上爬的过程中和点权不太一样,还有个特判(WA了几次..) 完整代码 #include<cstring> #inclu ...
- ubuntu配置小飞机
现在有两种方式在ubuntu配置本地shadowsocks(前提已经在服务器上搭建好了ss) windows,ios和安卓配置都是gui,没什么好说的.然后前期工作什么买vps啊,比较无脑,不想记录这 ...
- C# Levenshtein计算字符串的相似度
static void Main(string[] args) { Levenshtein(@"今天天气不错", @"今天的天气不错啊"); Console.R ...
- 前端工具mock的使用 - 造数据模拟网络请求
前后端同步开发过程中,有时候前端页面完成了,需要等待后端接口完成部署后才能联调. 这个时候如果不想等待,想自己造数据模拟网络请求,这种情况就能用到mock工具了. mock工具可以用在web网站,也能 ...
- P1522 牛的旅行 Cow Tours floyed
题目描述 农民 John的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通.这样,Farmer John就有多个 ...
- macof python攻击脚本
#!/usr/bin/python import sys from scapy.all import * import time iface="eth0" if len(sys.a ...
- Spark WordCount的两种方式
Spark WordCount的两种方式. 语言:Java 工具:Idea 项目:Java Maven pom.xml如下: <properties> <spark.version& ...
- 图解CSS3核心技术与案例实战(1)
前言: 我买了一本<图解CSS3核心技术与案例实战>大漠写的,为了提高自己的自觉性呢,抓紧看书,把读书笔记放在这上面,跟大家一起分享,也为督促自己完成读书计划. 文末有微信公众号,感谢你的 ...
- VB控件间的拖放
新建工程,放置控件Picture1,Text1,Text2,复制下面的代码运行 Text1和Text2可以互相拖放,也可以将Picture1拖放给Text1,Text2. Private Sub Fo ...