.net(C#)操作文件的几种方法汇总

System.IO命名空间下类的用法:
在System.IO名称空间中包含了用于文件输入输出的主要类。
File:实用类,提供许多静态方法,用于移动、复制和删除文件。
Directory:实用类,提供许多静态方法,用于移动、复制和删除目录。
Path:实用类,用于处理路径名称。
FileInfo:表示磁盘上的物理文件,具有可以处理此文件的方法。要完成对文件的读取和写入工作,就必须创建Stream对象。
DirectoryInfo:表示磁盘上的物理目录,具有可以处理此目录的方法。
FileStream:表示可以被写或被读,或二者均可的文件。此文件可以同步或异步的读和写。
StreamReader:从流中读取字符数据,并可以通过使用FileStream被创建为基类。
StreamWriter:向流写字符数据,可以通过使用FileStream被创建为基类。
FileSystemWatcher:用于监控文件和目录,并在这些位置发生变化时,给出应用程序可以捕获的事件。

示例代码片段:
1.读取文件:StreamReader和StreamWrite操作的的字符串
FileStream的用法
System.IO.FileStream fs = new FileStream("Test.txt", FileMode.OpenOrCreate,FileAccess.Read);
char[] cs = new char[fs.Length];
byte[] bs = new byte[fs.Length];
fs.Read(bs,0,(int)fs.Length);
Encoding e = System.Text.Encoding.UTF8;
cs=e.GetChars(bs);

foreach (char c in cs)
{
Console.WriteLine(c);
}
StreamReader的用法:
string str;
using (StreamReader sr = new StreamReader("Test.txt"))
{
while ((str = sr.ReadLine()) != null)
{
Console.WriteLine(str);
}
}
2.写入文件:
FileStream的用法:FileStream操作的是字节数组。而字节数据又要通过Encoding类把字节数组和字符数组进行转换。
System.IO.FileStream fs = new FileStream("Test.txt", FileMode.Truncate);
string str = "Hello,this is my cc";
byte[] array = new byte[str.Length];
System.Text.Encoding e = System.Text.UTF8Encoding.UTF8;
array=e.GetBytes(str);
fs.Write(array, 0, array.Length);
StreamWrite的用法:
using (StreamWriter sw = new StreamWriter("Test.txt",true,Encoding.GetEncoding("gb2312")))
{
sw.WriteLine("你好不好,我想你");
}

File类一些常用的静态方法:

方法说明:
Copy()
将文件复制到规定的位置
Create()
在规定的路径上创建文件
Delete()
删除文件
Open()
在规定的路径上返回FileStream对象
Move()
将规定的文件移动到新位置。可以在新位置为文件规定不同的名称

Directory类一些常用的静态方法:

方法说明
CreateDirectory()
创建具有规定路径的目录
Delete()
删除规定的目录以及其中的所有文件
GetDirectories()
返回表示当前目录之下的目录的Directory对象的数组
GetFiles()
返回在当前目录中的File对象的数组
Move()
将规定的目录移动到新位置。可以在新位置为文件夹规定一个新名称

FileInfo类:

它没有静态方法,仅可用于实例化的对象。FileInfo对象表示在磁盘或网络位置的文件。注意它不是流。为了实现对文件的读取或写入,必须创建Stream对象。

如果仅在对象上进行单一方法调用,则可以使用静态File类。在此,静态调用要快一些,因为.Net Framework不必遍历实例化新对象并调用方法的过程。但是如果应用程序在文件上执行几种操作,在实例化FileInfo对象并使用其方法就更好一些。这会节省时间,因为对象将在文件系统上引用正确的文件,而静态类就必须每次都寻找文件。

FileInfo类提供的基础性的属性,可用来更新文件。

属性
说明

Attributes
获取或者设置当前文件的属性
CreationTime
获取当前文件的创建日期和时间
DirectoryName
返回文件目录的路径
Exists
判断是否存在文件
FullName
检索文件的完整路径
Length
获取文件的容量
Name
仅仅返回文件的名称,而不是完整的文件位置路径

DirectoryInfo类:

DirectoryInfo类的作用类似于FileInfo类。它是一个实例化的对象,表示计算机上的单一目录。同FileInfo类—样,在Directory和DirectoryInfo之间可以复制许多方法调用。当使用这二者时,可以便用相同的原则:如果进行单一调用,就使用静态Directory类。如果进行一系列调用,则使用实例化的DirectoryInfo对象。

DirectoryInfo类与FileInfo类共享几乎所有相同的属性,DirectoryInfo类作用在无文件的目录上除外。

FileStream对象:

表示在磁盘或网络路径上指向文件的流。当类提供向文件读取和写入字节的方法时,经常使用StreamReader和StreamWriter执行这些功能。这是因为FileStream类操作字节和字节数组,而Stream类操作字符数据。

还有几种方法可以创建FileStream对象。构造函数具有许多不同的重载/版本,但是最简单的构造函数仅仅带有两个参数,即文件名和FileMode枚举。

FileStream aFile = new FileStream("a.txt",FileMode.OpenOrCreate);

FileMode枚举的成员:

FileMode枚举成员
说明
Append
如果文件存在,就打开文件,将文件位置移动到文件的末尾,并创建个新文件。FileMode.Append仅可以与枚举FileAccess.Write联合使用
Create
创建新文件,如果存在这样的文件就破坏它
CreateNew
创建新文件,但是如果已经存在了此文件,则抛出异常
Open
打开现有的文件。如果不存在所规定的文件,则抛出异常
OpenOrCreate
如果文件存在,则规定打开文件,否则就创建新文件。如果文件已经存在,则保留在文件中的数据
Truncate
打开现有文件,清除其内容。然后我们可以向文件写入全新的数据,但是保留文件的初始创建日期。必须存在有文件,否则就会抛出异常

前面的构造函数默认以只读模式打开文件。需要一个附加参数规定不同的访问级别,此参数即FileAccess参数。

FileStream aFile = new FileStream("a.txt",FileMode.OpenOrCreate,FileAccess.Write);

此行代码将打开文件,对文件进行写访问。对文件的任何读的企图都会导致抛出异常。仅有3种类型的FileAccess枚举:Read,ReadWirte和Write。可以打开一个文件,只读、只写或进行读写操作。此属性的作用是:基于用户的身份验证级别改变用户对文件的访问。

付出最大努力,追求最高成就。

 

.net(C#)操作文件的几种方法汇总的更多相关文章

  1. IO流----操作文件的9种方法代码实现

    IO流----操作文件的9种方法代码实现: 1:使用字节流读写数据: 四种方式: method1:          每次读写一个字节,边读边写: /* * 复制文本文件. * * 数据源:从哪里来 ...

  2. golang操作文件的四种方法

    golang追加内容到文件末尾 字数349 阅读54 评论0 喜欢2 golang读写文件,网上很多教程了但是今天有个需求,想要把内容追加写到文件末尾google了好久,没有查到研究了一会儿file库 ...

  3. java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)

     java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...

  4. MySQL命令执行sql文件的两种方法

    MySQL命令执行sql文件的两种方法 摘要:和其他数据库一样,MySQL也提供了命令执行sql脚本文件,方便地进行数据库.表以及数据等各种操作.下面笔者讲解MySQL执行sql文件命令的两种方法,希 ...

  5. Linux 下操作GPIO(两种方法,驱动和mmap)(转载)

    目前我所知道的在Linux下操作GPIO有两种方法: 1.编写驱动,这当然要熟悉Linux下驱动的编写方法和技巧,在驱动里可以使用ioremap函数获得GPIO物理基地址指针,然后使用这个指针根据io ...

  6. Linux 下操作gpio(两种方法,驱动和mmap)

    目前我所知道的在linux下操作GPIO有两种方法: 1.  编写驱动,这当然要熟悉linux下驱动的编写方法和技巧,在驱动里可以使用ioremap函数获得GPIO物理基地址指针,然后使用这个指针根据 ...

  7. Shell脚本中执行sql语句操作mysql的5种方法【转】

    对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...

  8. 移动oracle数据文件的两种方法

    1.alter database方法该方法,可以移动任何表空间的数据文件. ***关闭数据库***SQL> shutdown immediateDatabase closed.Database ...

  9. [转载]C#读写txt文件的两种方法介绍

    C#读写txt文件的两种方法介绍 by 大龙哥 1.添加命名空间 System.IO; System.Text; 2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char ...

随机推荐

  1. 再看.net本质

    1.[资源的地址-通用资源标识符] 我们在地址栏中输入的内容称为通用资源标识符(Universal Resource Identifier,URI),它有很多种形式,在Web中我们通常使用称为统一资源 ...

  2. SQO (标准查询运算符)方法 & Linq To Object

    #region SQO (标准查询运算符) 方法 #region Where() Find() FindAll() FirstOrDefault()等方法 static void c01where() ...

  3. java web学习

    一直想下决心好好学下java web,但是总是间断,虽然我的方向是ios,但是觉得后台也是相当重要,毕竟移动端实际上更多也就是展示后台拉取到的信息,搞移动端的不能总是受制于后台,各位看官觉得呢? 这两 ...

  4. DEDECMS如何修改数据库密码以及忘记了后台密码怎么办

    忘记后台密码1.登录PHPmyadmin登录phpmyadmin,找到忘记密码网站所在的数据库并打开2.打开dede_admin数据表:找到dede_admin这项如图,pwd下的值就是你的密码,织梦 ...

  5. 通用简单的 分页 SQL

    select                ID,TITLE,CONTENT,USERNAME,REALNAME,UNIT,UNITID,NOWTIMES,ACCEPTERID,ACCEPTERNAM ...

  6. SQL Server 数据库设计

    一.数据库设计的必要性 在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的表比较多,表与表之间的关系比较复杂,那我们就需要进行规范的数据库设置.如果不经过数据库的设计,我们构建的数据库不 ...

  7. 关于java classpath问题

    在配置java环境的时候,有一个classpath,这是jre寻找.class文件的路径.一般会设置为当前路径".;%JAVA_HOME%\lib;",前面的.为当前路径 如果没有 ...

  8. javaSE第十三天

    第十三天    76 1. StringBuffer(掌握)    76 (1)说明:    77 (2)StringBuffer的构造方法    77 (3)StringBuffer的常见功能    ...

  9. JavaScript根据CSS的Media Queries来判断浏览设备的方法

    CSS 部分 首先随便新建一个用来做判断的类,然后通过 Media Queries 来对这个类的 z-index 属性赋予不同的值.这个类仅作为 JavaScript 读取使用,所以需要将其移出屏幕窗 ...

  10. Navicat for PostgreSQL 必须知道的十大功能

    Navicat for PostgreSQL 是一套易于使用的图形化 PostgreSQL 数据库管理工具.可使用强劲的 SQL 编辑器创建和运行查询.函数和使用多功能的数据编辑工具管理数据.Navi ...