在.net中创建目录,大多数人使用的是Directory.CreateDirectory这个控件,然后,很多人就会发现,一般在本机调试时可以正常运行,但使用虚拟主机时,就不可以用了,为什么呢?
原因如下:
1、Directory控件的运行原理是从根目录开始请求,也就是说,假如您想在E:\web\log下面再创建一个目录,使用Directory控件时,Directory会自动从E盘的根目录开始请求,检测是否存在;
2、为什么本机调试时可以使用呢?因为大部分程序员,对于本机的系统安全并没有做特别的设置,所以默认情况下,程序执行时对本机所有的目录及分区都有访问的权限,所以在Directory请求时不会报错;
3、为什么在虚拟主机上使用时会报错,不能执行呢?虚拟主机,是在一台服务器上创建多个用户的站点,为了安全,虚拟主机开放的权限只限于用户目录下面的权限,并没有上级目录及根目录的权限,所以Directory请求根目录的权限时,就会报错,没有权限。(注意:如果您使用的虚拟主机有Directory请求根目录的权限,那么您选用的虚拟主机服务商就太不专业了,基本的安全权限都没有配好,您的网站内容将无任何安全可言,您网站中的数据将会被任一个用户能请求到,能够看到、下载到!)
如果解决这个问题呢?
1、因为只要正确配制了安全权限的虚拟主机,都不能使用Directory控件来创建目录,如何解决这个问题呢?这就需要我们想一个变通的办法。
2、我们都知道,ASP中有一个FSO的控制功能,而且被大量使用,基本上99%以上的虚拟主机服务商会给用户开放这个权限,所以我们就可以调用ASP中的FSO控件来完成目录的相关操作。
实现方法
可以使用 Object Browser(对象浏览器)来查看 FSO 模型的对象、集合、属性、方法、事件和常数。要在 Object Browser(对象浏览器)中查看 FSO,必须首先向 Microsoft 脚本运行时类型库添加一个引用。
向 Microsoft 脚本运行时类型库添加引用
在 Project(项目)菜单上,单击 Add Reference(添加引用)。
在 COM 选项卡上,选择 Microsoft Scripting Runtime(Microsoft 脚本运行时),单击 Select(选择),然后单击 OK(确定)。 现在,FSO 将显示在 Object Browser(对象浏览器)中的 Interop.Scripting 节点内。
使用 FileSystemObject 进行编程:
使用 CreateObject 方法创建一个 FileSystemObject 对象。
将一个变量定义为 FileSystemObject 对象。例如:
Dim MyFileStream as Scripting.New FileSystemObject。
对新创建的对象使用相应的方法。
访问对象的属性。
代码示例
以下示例使用 FileSystemObject 对象的实例来读取文件并写入文件内容。
Public Class UsesScripting Public Shared Sub Main() Dim fileSystem As New Scripting.FileSystemObject() Dim file As Scripting.TextStream file = fileSystem.OpenTextFile("E: est.txt", _ Scripting.IOMode.ForReading, False,_ Scripting.Tristate.TristateUseDefault) Dim contents As String = file.ReadAll() Console.WriteLine(contents) file.Close() End Sub
End Class
|