.Net 文件系统类

这里介绍一点学习C#中的文件知识,这篇文章简要说明了文件系统的几个类,这些类存在于System.IO名称空间当中,顺带提了File类的读写,后续文章将介绍 流 的操作。了解了文件和流的知识,在Windows Phone开发的文件操作中会有很大帮助。

   

C#是一门面向对象的语言,对于初学者来说,可能不大理得清各种类,其实主要是一些类的继承,继承后实现各个类自己特有的功能。所以继承关系可以帮助我们有效地理解很多为什么。可能还需要一点多态的概念。

   

  • 1.继承关系

<<文件系统类 - 绘图.vsdx>>

======================说明=====================================

System.MarshalByRefObject

这是.Net类中用于远程操作的基对象类,我也不是很了解,详见这篇文章http://dudu.cnblogs.com/archive/2004/03/04/2182.html

FileSystemInfo

可以表示任何文件系统对象的基类

FileInfo和File

表示文件系统上的文件,他们的区别在于,File类是静态类,如果执行一个操作,可以免去实例化对象的开销,而FileInfo用一个对象执行多次操作。

DirectoryInfo和Directory

表示文件系统上的文件夹,区别同上。

Path

处理路径名

DriveInfo

驱动器信息

   

  • 2.FileInfo DirectoryInfo File Directory Path 类

介绍一下FileInfo和DirectoryInfo类

FileInfo myFile = new FileInfo(@"D:\demo.txt"); 

myFile.CopyTo(@"E:\demo.txt"); 

 

下面这段代码有相同的效果

 

File.Copy(@"D:\demo.txt",@"E:\demo.txt"); 

 

第一段代码执行的时间要略长一点,因为需要实例化一个FileInfo对象myFile,但是myFile可以继续执行更多的操作,而第二段不需要实例化一个对象。

   

从上面的例子可以看到,只要把包含文件系统对象的路径字符串传给构造函数就可以实例化对象了,下面是文件夹的实例

 

DirectoryInfo myFolder = new DirectoryInfo(@"D:\demofolder"); 

 

那么问题来了,如果给文件一个路径,给路径一个文件会怎么样呢?

答案是不会报错,只有在调用方法的时候,如果调用了它不能完成的任务,就会抛出异常。其实,FileInfo和DirectoryInfo对象有一个属性 Exists表示是否存在,例如:

 

FileInfo test = new FileInfo(@"C:\Windows"); 

Console.WriteLine(test.Exists.ToString()); 

 

这段代码将输出false,如果调用test.Open(),以打开文件的方式打开文件夹,就会产生一个异常。

另外,这两个类有许多属性、方法确定对象的信息,执行操作,这里不一一列举了。

在属性中,有创建时间,最后一次访问的时间,最后一次写入的时间,这些属性都是可以写入的哦,写入的意义在于,删除旧文件,用新内容替换旧文件的时候,可以修改创建日期来匹配原来文件的创建日期。

   

然后是Path类

Path类是静态类,不能被实例化,它提供的一些静态方法可以很容易地对路径名进行操作。例如:

 

Console.WriteLine(Path.Combine(@"D:\demofolder","demo.txt"); 

这段代码显示完整路径名。

   

  • 3.文件的读写

文件读写非常简单,但是不是通过上面介绍的DirectoryInfo FileInfo类来完成。在.Net中可以通过File对象读写文件,其本质是通过 流 来读写文件。

File类有众多的方法供你选用:

 

File.ReadAllText(FilePath);//读取所有文本,返回文件内容的字符串 

File.ReadAllText(FilePath,Encoding)//以指定的编码读取 

 

例如:

 

File.ReadAllText(test,Encoding.ASCII); 

 

还有:

 

ReadAllBytes()//打开二进制文件,读入一个byte[] 数组中 

ReadAllLines()//逐行读取,返回一个字符串数组。 

 

有读就有写,方法名称都是相对应的。

 

WriteAllText(FilePath,Contents); 

WriteAllText(FilePath,Contents),Encoding; 

WriteAllBytes(); 

WriteAllLines();把字符串数组写入文件,每一行一个字符串。 

 

转载于:https://www.cnblogs.com/amvincible/p/4394285.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值