C#中的文件操作
在.NET Framework 中进行的所有输入和输出工作都要用到流(stream)
有两种类型的流:
- 输出流:当向某些外部目标写入数据时,就要用到输出流(将数据写入到文件中)。
- 输入流:用于将数据读入程序可以访问的内存或变量中(从文件中读入数据到内存或者变量中)。
下面列出文件操作的一些常用类:
| 类名 | 说明 |
| File | 静态实用类,提供许多静态方法,用于移动、复制和删除文件 |
| Directory | 静态实用类,提供许多静态方法,用于移动、复制和删除文件 |
| Path | 实用类,用于处理路径名称 |
| FileStream | 表示可写或可读,或二者均可的文件。此文件可以同步或异步地读写 |
| StreamReader | 从流中读取字符数据,可以使用FileStream 将其创建为基类 |
| StreamWriter | 向流写入字符数据,可以使用FileStream 将其创建为基类 |
其中File 类的常用方法有:
| 方法 | 说明 |
| Copy() | 将文件从源位置复制到目标位置 |
| Create() | 在指定的路径上创建文件 |
| Delete() | 删除文件 |
| Open() | 返回指定路径上的FileStream 对象 |
| Move() | 将指定的文件移动到新位置。可以在新位置为文件指定不同的名称 |
eg:
File.Create(@"F:\abc.txt"); //创建文件 abc.txt
File.Copy(@"F:\abc.txt",@"F:\Files\abc.txt"); //将 abc.txt 文件 复制到 Files文件夹中(开始里面没有abc.txt文件)
检查是否存在某个文件:
bool t = File.Exists(@"F:\Test.txt");
Console.WriteLine(t);
Directory类(静态类)的常用方法

创建文件夹:
创建文件夹 静态类
Directory.CreateDirectory(@"F:\Test1");
Directory.Delete(@"F:\Test1");
获取应用程序的当前目录:
string path = Directory.GetCurrentDirectory(); //获取应用程序的当前工作目录
Console.WriteLine(path);
FileStream对象
FileStream 对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader 或StreamWriter 执行这些功能。这是因为FileStream 类操作的是字节和字节数组(byte[]),而Stream 类操作的是字符数据(char[])。
FileStream类有两个常用的构造函数:
第一个:
FileStream aFile = new FileStream(filename, FileMode.<Member>);
第二个:
FileStream aFile = new FileStream(filename, FileMode.<Member>, FileAccess.<Member>);
其中 FileMode.<Member> 和 FileAccess.<Member> 是个枚举值。
其中FileMode.<Member>取值为:

FileAccess.<Member>取值为:

使用 FileStream类 从文件中读出数据
byte[] byData = new byte[];
char[] charData = new char[]; try
{
FileStream aFile = new FileStream(@"F:\Test.txt", FileMode.Open); //使用指定的路径和创建模式初始化 FileStream 类的新实例。 aFile.Seek(, SeekOrigin.Begin); //从文件的第几个字符开始查找,下标从0开始,这里相当于从b开始计算
aFile.Read(byData, , ); //读出文件中的数据,并存在 byData字节数组中
} catch (System.Exception ex)
{
Console.WriteLine("An Exception Occured!");
Console.WriteLine(ex.ToString());
Console.ReadKey();
} //Decoder类 将一个字节数组转换为字符数组 用于输出
Decoder d = Encoding.UTF8.GetDecoder(); d.GetChars(byData, , byData.Length, charData, ); //该方法用于提取 字节数组 byData , 并存储在 charData字节数组中 Console.WriteLine(charData); //输出 charData数组中的数据
Console.ReadKey();
使用FileStream 类向文件中写入数据
byte[] byData = new byte[];
char[] charData = new char[]; //将输入的字符串存入到字符数组 charData[] 中
Console.Write("请输入一个字符串:");
string temp = Console.ReadLine();
for (int i = ; i < temp.Length; i++)
{
charData[i] = temp[i];
} //将字符数组转化为字节数组
Encoder en = Encoding.UTF8.GetEncoder();
en.GetBytes(charData, , charData.Length, byData, , true); //File.Create(@"F:\Temp.txt");
FileStream fs = new FileStream(@"F:\Temp1.txt", FileMode.CreateNew);
fs.Seek(, SeekOrigin.Begin);
fs.Write(byData, , ); //此处已将字符写入到 字节数组byData中
使用 StreamReader 和 StreamWriter 对文件进行最简单的读写操作
进行写操作:
//最简单的把向文件中写入数据
StreamWriter sw = new StreamWriter("text2.txt");
sw.Write("hello world");
sw.Close();
此段代码将在你的项目中 ..\bin\Debug 中产生一个 text2.txt的文本文件, 其中写入了内容 " hello world ".
进行读操作: (只返回一行数据)
StreamReader sr = new StreamReader("text2.txt");
string str = sr.ReadLine(); // ReadLine() 只能返回一行字符串
sr.Close();
Console.WriteLine(str);
输出结果:

若想返回文件中的全部内容,则使用 StreamReader 的 Read()方法
//创建一个缓冲区来接收从流中读出的数据
char[] data = new char[];
StreamReader sr = new StreamReader("text2.txt");
sr.Read(data, , data.Length);
sr.Close();
Console.WriteLine(data);
输出结果:

C#中的文件操作的更多相关文章
- 第32课 Qt中的文件操作
1. Qt的中IO操作 (1)Qt中IO操作的处理方式 ①Qt通过统一的接口简化了文件和外部设备的操作方式 ②Qt中的文件被看作一种特殊的外部设备 ③Qt中的文件操作与外部设备的操作相同 (2)IO操 ...
- 重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作
原文:重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 [源码下载 ...
- 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Application Data 中的媒体
[源码下载] 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Ap ...
- 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理
[源码下载] 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理 作者:webabcd 介绍背水一战 Windows 10 ...
- Java中的文件操作(一)RandomAccessFile
今天,学到的是java中的文件操作. Java.IO.File Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是Rand ...
- Win 32平台SDK中的文件操作
读取文件: HANDLE hFile ; // 声明文件操作内核对象句柄 hFile = CreateFile(, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ...
- ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)
做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...
- 关于Python中的文件操作(转)
总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...
- 说说Python 中的文件操作 和 目录操作
我们知道,文件名.目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名.目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfi ...
随机推荐
- CentOS6.5升级手动安装gcc4.8.2
一.简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并 ...
- MySQL 单表百万数据记录分页性能优化
文章转载自:http://www.cnblogs.com/lyroge/p/3837886.html 背景: 自己的一个网站,由于单表的数据记录高达了一百万条,造成数据访问很慢,Google分析的后台 ...
- Linux 如何设置只允许域名访问站点而禁止IP访问站点
最近在论坛里看到有人问到 Linux 如何设置只允许域名访问站点而禁止IP访问站点的问题,之前自己也用过这个功能,可以防止别人用 IP 地址来访问到自己的网站,下面我就我自己的环境给出解决方法,我用的 ...
- Linux下iptables拦截Nginx的问题
环境:CentOS 6.4 X64,Nginx 1.5.3 问题:配置好Nginx后,加入了“iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT” ...
- 从省市区多重级联想到的,react和jquery的差别
在我们的前端项目里经常会用到级联的select,比如省市区这样.通常这种级联大多是动态的.比如先加载了省,点击省加载市,点击市加载区.然后数据通常ajax返回.如果没有数据则说明到了叶子节点. 针 ...
- IOC学习
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注入 ...
- STM32调试大法 之 串口通讯
开发过程经常需要查看某些特定参数.通常的方法可以使用paintf进行打印输出,观察具体的变量值.STM32内部集成有USART的串口功能,可以通过串口直接输出到电脑(上位机).使用非常方便,基本不需要 ...
- oracle 子查询因子化 浅谈(with的使用)
近来学习oracle,想要提高自己所写语句的效率和易读性,今天的笔记是关于子查询因子话这么一个东西 因子化的查询不一定可以提高效率,但是一定可以再提高程序的可读性方面成效显著 --with 语句 wi ...
- 【js】undefined
alert(a); function name(parameters) { alert(parameters); } var a; name(a); ---输出结果--- underfind unde ...
- 网络笔记01-3 socket 实现百度页面的两种方式
scoket 实现百度页面的两种方式: 1.利用系统自带 //1.创建URL NSURL *url=[NSURL URLWithString:@"http://m.baidu.com& ...