File类

Posted on 2010-01-09 15:33  saysay,looklook  阅读(1871)  评论(0编辑  收藏  举报

16.7  使用File类型

File类型的静态成员提供了和FileInfo类型差不多的功能。与FileInfo类似,File类提供了AppendText()Create()CreateText()Open()OpenRead()OpenWrite()OpenText()方法。其实,在大多数情况下,FileFileInfo类型能互换使用。例如,前面每一个FileStream示例都可以用File类型来简化:

 

static void Main(string[] args)

{

    // 通过File.Create()获取FileStream对象。

  FileStream fs = File.Create(@"C:\Test.dat");

  fs.Close();

 

    // 通过File.Open()获取FileStream对象。

  FileStream fs2 = File.Open(@"C:\Test2.dat",

    FileMode.OpenOrCreate,

    FileAccess.ReadWrite, FileShare.None);

  fs2.Close();

 

    // 得到一个只读权限的FileStream对象。

  FileStream readOnlyStream = File.OpenRead(@"Test3.dat");

  readOnlyStream.Close();

 

    // 得到一个只写权限的FileStream对象。

  FileStream writeOnlyStream = File.OpenWrite(@"Test4.dat");

  writeOnlyStream.Close();

 

    // 得到一个StreamReader对象。

  StreamReader sreader = File.OpenText(@"C:\boot.ini");

  sreader.Close();

 

    // 得到一些StreamWriter对象。

  StreamWriter swriter = File.CreateText(@"C:\Test3.txt");

  swriter.Close();

  StreamWriter swriterAppend = File.AppendText(@"C:\FinalTest.txt");

  swriterAppend.Close();

}

 

.NET 2.0新增的File成员

FileInfo不同,File类型提供了一些独有的成员(从.NET 2.0开始),表16-5列举了其中的一些成员,它们可以极大地简化读写文本数据的过程。

16-5  File类型的方法

   

   

ReadAllBytes()

打开指定文件,以字节数组形式返回二进制数据,然后关闭文件

ReadAllLines()

打开指定文件,以字符串数组形式返回字符数据,然后关闭文件

ReadAllText()

打开指定文件,以System.String形式返回字符数据,然后关闭文件

WriteAllBytes()

打开指定文件,写入字节数组,然后关闭文件

WriteAllLines()

打开指定文件,写入字符串数组,然后关闭文件

WriteAllText()

打开指定文件,写入字符数据,然后关闭文件

 

使用File类型的这些新方法,只用几行代码我们就可以批量读写数据。更好的是,每一个成员都自动关闭基层文件句柄。例如:

 

class Program

{

  static void Main(string[] args)

  {

    string[] myTasks = {

      "Fix bathroom sink",

      "Call Dave",

      "Call Mom and Dad",

      "Play XBox"};

 

        // C盘的文件写入所有数据。

    File.WriteAllLines(@"C:\tasks.txt", myTasks);

 

        // 重新读取然后输出。

    foreach (string task in File.ReadAllLines(@"C:\tasks.txt"))

    {

      Console.WriteLine("TODO: {0}", task);

    }

  }

}

 

很明显,如果你希望快速获取文件句柄的话,使用File类型能节省很多代码。然而使用前面提到的FileInfo对象的好处是能从FileSystemInfo抽象基类定义的成员中获取文件属性:

 

static void Main(string[] args)

{

    // 显示boot.ini的信息,然后以只读形式进行访问。

  FileInfo bootFile = new FileInfo(@"C:\boot.ini");

  Console.WriteLine(bootFile.CreationTime);

  Console.WriteLine(bootFile.LastAccessTime);

  FileStream readOnlyStream = bootFile.OpenRead();

  readOnlyStream.Close();

}

Copyright © 2024 saysay,looklook
Powered by .NET 9.0 on Kubernetes