26.1.2 FileInfo和DirectoryInfo
FileInfo和DirectoryInfo代表某一个具体的文件或目录,它们都派生自抽象类FileSystemInfo,因此不能被实例化。FileSystemInfo提供了文件和目录都需要的一些主要功能——提供对文件和目录的共同操作。因为FileSystemInfo类是FileInfo和DirectoryInfo的共同基类,因此FileSystemInfo类既可以表示文件,也可以表示目录。FileSystemInfo类提供的主要成员如表26-1所示。
这些成员都被FileInfo和DirectoryInfo类所继承。
代码清单26-2 FileInfo代码示例
FileInfo fi=new FileInfo(@"c:\iosample\mytext.txt");
if(fi.Exists)
{
Console.WriteLine("Name:\t\t{0}",fi.Name);
Console.WriteLine("CreationTime:\t{0}",fi.CreationTime);
Console.WriteLine("Directory:\t{0}",fi.Directory);
Console.WriteLine("DirectoryName:\t{0}",fi.DirectoryName);
Console.WriteLine("Extension:\t{0}",fi.Extension);
Console.WriteLine("FullName:\t{0}",fi.FullName);
Console.WriteLine("LastAccessTime:\t{0}",fi.LastAccessTime);
Console.WriteLine("LastWriteTime:\t{0}",fi.LastWriteTime);
}
上述代码的运行结果为:
Name:mytext.txt
CreationTime:2010-5-29 13:38:16
Directory:c:\iosample
DirectoryName:c:\iosample
Extension:.txt
FullName:c:\iosample\mytext.txt
LastAccessTime:2010-5-29 18:01:41
LastWriteTime:2010-5-29 13:38:16
代码清单26-3 是使用FileInfo和DirectoryInfo把代码清单26-1改写后的结果,注意观察两者之间的区别。
代码清单26-3 使用FileInfo和DirectoryInfo创建文件和目录
using System;
using System.IO;
namespace ProgrammingCSharp4
{
class IOSample
{
public static void Main()
{
//声明文件流
FileStream fs=null;
//声明流读写器
StreamWriter writer=null;
try
{
//操作的目录
string dirPath=@"c:\iosample";
//操作的文件
string filePath=string.Format(@"{0}{1}",dirPath,"mytext.txt");
//声明并使用目录路径实例化一个DirectoryInfo对象
DirectoryInfo di=new DirectoryInfo(dirPath);
if(!di.Exists)//如果目录不存在
{
di.Create();//创建这个目录
Console.WriteLine(@“创建一个目录:c:\iosample”);
}
else
{
//提示目录已存在
Console.WriteLine(@“目录:c:\iosample已存在”);
}
//使用Name属性输出目录名
Console.WriteLine(“目录名:{0}”,di.Name);
//声明并实例化一个FileInfo对象
FileInfo fi=new FileInfo(filePath);
if(!fi.Exists)
{
//文件不存在,创建之
fs=fi.Create();
Console.WriteLine(“新建一个文件:{0}”,filePath);
}
else
{
//文件存在,打开之
fs=fi.Open(FileMode.Open);
Console.WriteLine(“文件:{0}已存在,打开它”,filePath);
}
//实例化流读写器,用于写入文本数据到文件流
writer=new StreamWriter(fs);
//定位到文件的末尾,即从末尾开始写入数据
fs.Seek(0,SeekOrigin.End);
//使用当前时间作为内容
string newContent=DateTime.Now.ToString();
//写入流,即写入文件
writer.WriteLine(newContent);
Console.WriteLine(“向文件中写入数据:{0}”,newContent);
//使用FileInfo的属性来输出文件的各种属性数据
Console.WriteLine("Name:\t\t{0}",fi.Name);
Console.WriteLine("CreationTime:\t{0}",fi.CreationTime);
Console.WriteLine("Directory:\t{0}",fi.Directory);
Console.WriteLine("DirectoryName:\t{0}",fi.DirectoryName);
Console.WriteLine("Extension:\t{0}",fi.Extension);
Console.WriteLine("FullName:\t{0}",fi.FullName);
Console.WriteLine("LastAccessTime:\t{0}",fi.LastAccessTime);
Console.WriteLine("LastWriteTime:\t{0}",fi.LastWriteTime);
}
finally
{
writer.Close();
fs.Close();
Console.WriteLine(“关闭数据流……”);
}
}
}
}
上述代码运行的结果是:
创建一个目录:c:\iosample
目录名:iosample
新建一个文件:c:\iosample\mytext.txt
向文件中写入数据:2010-6-2 18:49:22
Name:mytext.txt
CreationTime:1601-1-1 8:00:00
Directory:c:\iosample
DirectoryName:c:\iosample
Extension:.txt
FullName:c:\iosample\mytext.txt
LastAccessTime:1601-1-1 8:00:00
LastWriteTime:1601-1-1 8:00:00
关闭数据流……
请按任意键继续……