大多数 Web 应用程序依赖数据库来存储信息。在多用户场景中,数据库是无与伦比的。但还是会有不可避免的遇到访问存储在其他地方(如文件系统)的数据的问题。常见的示例有:读取其他程序产生的信息、为测试而编写的临时日志等。

 

使用文件系统

       最基本的文件访问包括获取现有文件和目录的信息,以及执行典型的文件系统操作,如复制文件和创建目录。这些任务并没有设计真正的打开或写文件。

       .NET 提供了几个基类(System.IO 命名空间中)用于获取文件系统信息:

  • Directory 和 File :这两个类提供一组静态方法,可以通过它们获取任意服务器上可见的文件和目录的信息。
  • DirectoryInfo、FileInfo、DriveInfo :这些类用相似的实例方法获取同样的信息。

       这两组类提供相似的方法和属性。一般而言,Directory 和 File 类更适合处理一次性任务。DirectoryInfo 和 FileInfo 更适合获取若干信息,这样不必再每次调用方法时都提供文件或目录的信息。同时,它们还更快一些,因为 DirectoryInfo 和 FileInfo 类只执行一次安全检查(创建对象的实例时),而 Directory 和 File 在每次调用方法时都需要执行安全检查。

 

Directory 类和 File 类

       它们提供了很多有用的方法,每个方法都接受相同的参数:用于识别执行操作的文件和目录的完全限定路径名

Directory 方法:

CreateDirectory() 创建一个或一组目录(创建不存在的目录中的子目录时)。
Delete() 删除对应的空目录。如果要删除该目录及其所有内容(子目录和文件),第二个可选参数设为 True
Exists() 返回 bool 值表示指定的目录是否存在
GetCreationTime()
GetLastAccessTime()
GetLastWriteTime()
返回一个 DateTime 对象,代表创建、访问、写入目录的时间。每个Get方法都有一个对应的Set方法,这里没有列出。
GetDirectories()
GetFiles()
返回一个字符串数组,数组元素代表指定目录中的子目录或文件。第二个可选参数支持搜索表达式,如 (ASP*.*)
GetLogicaDrives() 返回一个字符串数组,数组元素代表当前计算机上定义的一个驱动器,如 c:\
GetParent() 返回指定目录的父目录
GetCurrentDirectory()
SetCurrentDirectory()
设置和获取当前目录
Move() 接收两个参数:源路径和目标路径。目录及其内容可以移动到任意路径,但必须在同一个磁盘
GetAccessControl()
SetAccessControl()
返回或设置一个 System.Secutiry.AccessControl.DirectorySecurity 对象。可以使用这个对象检查 Windows 访问控制表(ACL),它们应用于这个目录且可以通过编程来修改。

 

File 方法:

Copy() 接收两个参数:源文件和目标文件的完整文件名。如果允许覆写,第三个可选参数设为 true
Delete() 删除指定的文件,如果找不到文件也不会抛出异常。
Exists() 文件是否存在
GetAttributes()
SetAttributes()
获取或设置一个可以包含 FillAttribute 枚举值的任意组合的枚举值
GetCreationTime()
GetLastAccessTime()
GetLastWriteTime()
返回一个 DateTime 对象,代表创建、访问、写入文件的时间。每个Get方法都有一个对应的Set方法,这里没有列出。
Move() 接收两个参数:源文件和目标文件的完整文件名。可以跨磁盘移动文件甚至同时重命名文件
Create()
CreateText()
创建指定的文件并返回一个可用于写的 FileStream 对象。CreateText() 执行同样的任务但是返回一个封装了流的 StreamWriter 对象。
Open()
OpenText()
OpenRead()
OpenWrite()

打开一个文件(假设其存在)。OpenText() 和 OpenRead() 以只读方式打开文件,返回一个 FileStream 或 StreamReader 。OpenWrite() 以只写方式打开文件,返回 FileStream
ReadAllText()
ReadAllLines()
ReadAllBytes()
读取整个文件。分别以单一字符串、字符串数组、字节数组的形式返回内容。仅在小文件才使用这些方法,对于大型文件,使用流每次读取一块以节省内存使用。
WriteAllText()
WriteAllLines()
WriteAllBytes()

将单一字符串、字符串数组、字节数组一次写入完整文件内容。可以覆盖已存在的文件。
GetAccessControl()
SetAccessControl()
返回或设置一个 System.Secutiry.AccessControl.FileSecurity 对象。可以使用这个对象检查 Windows 访问控制表(ACL),它们应用于这个目录且可以通过编程来修改。

提示:File 类缺乏的唯一功能是获取给定文件的大小(可由 FileInfo 类提供)。

;
ListBox1.DataSource = Directory.GetFiles(directoryName);
ListBox1.DataBind();

相关文章:

  • 2022-12-23
  • 2021-09-02
  • 2022-12-23
  • 2021-12-31
  • 2021-09-19
  • 2022-12-23
  • 2021-11-09
猜你喜欢
  • 2021-08-06
  • 2021-12-09
  • 2021-05-18
  • 2022-01-15
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案