.Net Framework 提供了几个基类,用于获取现有文件信息。这些基类位于System.IO命名空间中,主要包括以下几个:
Directory和File: 这两个类提供一组静态方法,可以通过它们获取任意服务器上可见文件和目录的信息。
DriveInfo,DirectoryInfo和FileInfo: 这些类使用相似的实例方法和属性来获取同样的信息
这两组类提供相似的方法和属性。主要差别在于调用任何方法前必须创建DirectoryInfo或FileInfo对象,而Directory和File类的静态方法随时都可用。一般而言,Directory和File类更适合处理一次性任务。另一方面,如果你需要获取若干信息,创建DirectoryInfo和FIleInfo对象则更好一些,这样不必在每次调用方法时都提供文件或目录的名称。同时他们还更快一些,因为FileInfo和DirectoryInfo类只执行一次安全检查(仅在你创建对象实例时)。Directory和File类在每次调用方法时都要执行安全检查。
Directory类和File类
Directory类和File类提供了很多有用的方法(见msdn)
Directory和File的方法都非常直观。例如,可以用下面这段代码输出一个动态列表,显示当前目录中的每个文件名称。
上例中包含文件路径C:Temp的字符串前面跟着一个@字符。它告诉c#完全按照你写的格式解释字符串。没有这个字符的话,c#会认为是从目录分隔符“\”开始一个特殊字符序列。另一个办法是使用转义字符序列"\\",C#把它解释为单个斜杠。所以,应该把路径写作"C:\\Temp".
因为所谓的文件列表只是普通的字符串列表,它可以很方便地绑定到列表控件上,这样就可以用如下更高效的语法在页面上显示它们了:
PS:要让这段代码正常运行,用于运行ASP.NET工作进程的账号必须有访问所使用的目录权限,否则,web页面试图访问文件系统时会抛出一个SecurityException异常。你可以右击修改目录许可,选择"属性"---"安全"标签。
如果使用的是IIS5的默认ASP.NET设置,你可以为ASP.NET账号赋予读写权限;如果是IIS6,需要给IIS_WPG组赋予许可;对于IIS7,需要给IIS_USRS组赋予许可。另外,你可以修改ASP.NET使用的账号。
Directory和File: 这两个类提供一组静态方法,可以通过它们获取任意服务器上可见文件和目录的信息。
DriveInfo,DirectoryInfo和FileInfo: 这些类使用相似的实例方法和属性来获取同样的信息
这两组类提供相似的方法和属性。主要差别在于调用任何方法前必须创建DirectoryInfo或FileInfo对象,而Directory和File类的静态方法随时都可用。一般而言,Directory和File类更适合处理一次性任务。另一方面,如果你需要获取若干信息,创建DirectoryInfo和FIleInfo对象则更好一些,这样不必在每次调用方法时都提供文件或目录的名称。同时他们还更快一些,因为FileInfo和DirectoryInfo类只执行一次安全检查(仅在你创建对象实例时)。Directory和File类在每次调用方法时都要执行安全检查。
Directory类和File类
Directory类和File类提供了很多有用的方法(见msdn)
Directory和File的方法都非常直观。例如,可以用下面这段代码输出一个动态列表,显示当前目录中的每个文件名称。
string
directoryName
=
@"
C:\Temp
"
;
string [] fileList = Directory.GetFiles(directoryName);
foreach ( string file in fileList)
{
lstFiles.Items.Add(file);
}
string [] fileList = Directory.GetFiles(directoryName);
foreach ( string file in fileList)
{
lstFiles.Items.Add(file);
}
上例中包含文件路径C:Temp的字符串前面跟着一个@字符。它告诉c#完全按照你写的格式解释字符串。没有这个字符的话,c#会认为是从目录分隔符“\”开始一个特殊字符序列。另一个办法是使用转义字符序列"\\",C#把它解释为单个斜杠。所以,应该把路径写作"C:\\Temp".
因为所谓的文件列表只是普通的字符串列表,它可以很方便地绑定到列表控件上,这样就可以用如下更高效的语法在页面上显示它们了:
string
dirctoryName
=
@"
C:\Temp
"
;
lstFiles.DataSource = Direcory.GetFiles(dirctoryName);
lstFiles.DataBind();
lstFiles.DataSource = Direcory.GetFiles(dirctoryName);
lstFiles.DataBind();
PS:要让这段代码正常运行,用于运行ASP.NET工作进程的账号必须有访问所使用的目录权限,否则,web页面试图访问文件系统时会抛出一个SecurityException异常。你可以右击修改目录许可,选择"属性"---"安全"标签。
如果使用的是IIS5的默认ASP.NET设置,你可以为ASP.NET账号赋予读写权限;如果是IIS6,需要给IIS_WPG组赋予许可;对于IIS7,需要给IIS_USRS组赋予许可。另外,你可以修改ASP.NET使用的账号。