在.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#中的文件操作的更多相关文章

  1. 第32课 Qt中的文件操作

    1. Qt的中IO操作 (1)Qt中IO操作的处理方式 ①Qt通过统一的接口简化了文件和外部设备的操作方式 ②Qt中的文件被看作一种特殊的外部设备 ③Qt中的文件操作与外部设备的操作相同 (2)IO操 ...

  2. 重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作

    原文:重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 [源码下载 ...

  3. 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Application Data 中的媒体

    [源码下载] 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Ap ...

  4. 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理

    [源码下载] 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理 作者:webabcd 介绍背水一战 Windows 10 ...

  5. Java中的文件操作(一)RandomAccessFile

    今天,学到的是java中的文件操作. Java.IO.File Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是Rand ...

  6. Win 32平台SDK中的文件操作

    读取文件: HANDLE hFile ; // 声明文件操作内核对象句柄 hFile = CreateFile(, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ...

  7. ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

    做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...

  8. 关于Python中的文件操作(转)

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  9. 说说Python 中的文件操作 和 目录操作

    我们知道,文件名.目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名.目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfi ...

随机推荐

  1. c++11:copy_n

    copy_n: Copies exactly count values from the range beginning at first to the range beginning at resu ...

  2. Oracle bbed使用说明1

    一.centos上编译安装BBED工具 [orasrv@localhost ~]$ cd $ORACLE_HOME/rdbms/lib [orasrv@localhost ~]$ make -f in ...

  3. C# Winfrom小黄鸡功能调用

    最近研究微信公众平台,搭建了一个微信聊天机器人,调用小黄鸡的公众接口,实现在线和小黄鸡聊天的功能. 接口调用不是很麻烦,不过是php版本,所以研究了一下C#的功能模块, Winfrom版 后台界面代码 ...

  4. Basic Operation about Linux

    1. 永久开启/关闭防火墙 在linux中防火墙是一个名叫iptables的工具 开启: chkconfig iptables on 关闭: chkconfig iptables off 即时生效,重 ...

  5. [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(三)

    五.准备HA环境1.准备yum源a.安装vsftp服务,将光盘镜像copy到本地ftp目录作为yum源.[root@s1 ~]# mount 可以看到cdrom已经挂载了,首先安装vsftp服务[ro ...

  6. swift UIAlertController教程

    在iOS8中,UIAlertView与UIActionSheet都已经退休,取而代之的是UIAlertController!它的使用示范如下://弹出一个警告框,标题是“提示”,信息是“我的博客:oa ...

  7. 日志文件切割服务logrotate配置及crontab定时任务的使用

    1.下载logrotate 在Fedora和CentOS安装 yum install logrotate crontabs Debian和Ubuntu上 apt-get install logrota ...

  8. Java 8 VM GC Tuning Guide Charter2

    第二章 Ergonomics Ergonomics is the process by which the Java Virtual Machine (JVM) and garbage collect ...

  9. json 说明书

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Lan ...

  10. SignalR发布后不能生成signalr/hubs

    问题:代码写完后,在一台服务器上运行没有问题.换到另外一台服务器上,找不到signalr/hubs,显示404错误. SignalR版本:2.0.3 VS版本:2013 服务器:Windows Ser ...