zoukankan      html  css  js  c++  java
  • fso操作大全

    FSO操作大全2007-03-19 16:50如何删除一个文件
    [JScript]
    function DeleteFile(filespec)
    {
    var fso;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    fso.DeleteFile(filespec);
    }
    [VBScript]
    Sub DeleteAFile(filespec)
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.DeleteFile(filespec)
    End Sub


    FileExists 方法
    请参阅
    DriveExists 方法 | FolderExists 方法 | GetFile 方法 | GetFileName 方法
    应用于:FileSystemObject 对象
    语言
    JScript

    VBScript

    显示所有语言
    如果指定文件存在返回 True ;否则返回 False。

    object.FileExists(filespec)
    参数
    object
    必选项。应为 FileSystemObject 的名称。
    filespec
    必选项。需要判定是否存在的文件的名称. 如果文件可能不在当前文件夹中,那么必须提供完整的路径说明(可以是绝对的或相对的)。
    下面的例子说明了 FileExists 方法的用法。

    [JScript]
    function ReportFileStatus(filespec)
    {
    var fso, s = filespec;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    if (fso.FileExists(filespec))
    s += " exists.";
    else
    s += " doesn't exist.";
    return(s);
    }
    [VBScript]
    Function ReportFileStatus(filespec)
    Dim fso, msg
    Set fso = CreateObject("Scripting.FileSystemObject")
    If (fso.FileExists(filespec)) Then
    msg = filespec & " exists."
    Else
    msg = filespec & " doesn't exist."
    End If
    ReportFileStatus = msg
    End Function
    请参阅
    DriveExists 方法 | FolderExists 方法 | GetFile 方法 | GetFileName 方法
    应用于:FileSystemObject 对象


    脚本运行时库

    处理文件
    语言
    JScript

    VBScript

    显示所有语言
    有两种主要的文件处理类型:

    创建、添加或删除数据,以及读取文件
    移动、复制和删除文件
    创建文件
    创建空文本文件(有时被叫做“文本流”)有三种方法。

    第一种方法是用 CreateTextFile 方法。下面的示例示范了如何用 CreateTextFile 方法创建文本文件:

    [VBScript]
    Dim fso, f1
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
    [JScript]
    var fso, f1;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    f1 = fso.CreateTextFile("c:\\testfile.txt", true);
    创建文本文件的第二种方法是,使用 FileSystemObject 对象的 OpenTextFile 方法,并设置 ForWriting 标志。

    [VBScript]
    Dim fso, ts
    Const ForWriting = 2
    Set fso = CreateObject("Scripting. FileSystemObject")
    Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True)
    [JScript]
    var fso, ts;
    var ForWriting= 2;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true);
    创建文本文件的第三种方法是,使用 OpenAsTextStream 方法,并设置 ForWriting 标志。要使用这种方法,使用下面的代码:

    [VBScript]
    Dim fso, f1, ts
    Const ForWriting = 2
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CreateTextFile ("c:\test1.txt")
    Set f1 = fso.GetFile("c:\test1.txt")
    Set ts = f1.OpenAsTextStream(ForWriting, True)
    [JScript]
    var fso, f1, ts;
    var ForWriting = 2;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    fso.CreateTextFile ("c:\\test1.txt");
    f1 = fso.GetFile("c:\\test1.txt");
    ts = f1.OpenAsTextStream(ForWriting, true);
    添加数据到文件中
    一旦创建了文本文件,使用下面的三个步骤向文件添加数据:

    打开文本文件。

    写入数据。

    关闭文件。

    要打开现有的文件,则使用 FileSystemObject 对象的 OpenTextFile 方法或 File 对象的 OpenAsTextStream 方法。

    要写数据到打开的文本文件,则根据下表所述任务使用 TextStream 对象的 Write、WriteLine 或 WriteBlankLines 方法。

    任务 方法
    向打开的文本文件写数据,不用后续一个新行字符。 Write
    向打开的文本文件写数据,后续一个新行字符。 WriteLine
    向打开的文本文件写一个或多个空白行。 WriteBlankLines

    要关闭一个打开的文件,则使用 TextStream 对象的 Close 方法。

    注意 新行字符包含一个或几个字符(取决于操作系统),以把光标移动到下一行的开始位置(回车/换行)。注意某些字符串末尾可能已经有这个非打印字符了。
    下面的例子示范了如何打开文件,和同时使用三种写方法来向文件添加数据,然后关闭文件:

    [VBScript]
    Sub CreateFile()
    Dim fso, tf
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set tf = fso.CreateTextFile("c:\testfile.txt", True)
    ' 写一行,并带有一个新行字符。
    tf.WriteLine("Testing 1, 2, 3.")
    ' 向文件写三个新行字符。
    tf.WriteBlankLines(3)
    ' 写一行。
    tf.Write ("This is a test.")
    tf.Close
    End Sub
    [JScript]
    function CreateFile()
    {
    var fso, tf;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    tf = fso.CreateTextFile("c:\\testfile.txt", true);
    // 写一行,并带有一个新行字符。
    tf.WriteLine("Testing 1, 2, 3.") ;
    // 向文件写三个新行字符。
    tf.WriteBlankLines(3) ;
    // 写一行。
    tf.Write ("This is a test.");
    tf.Close();
    }
    读取文件
    要从文本文件读取数据,则使用 TextStream 对象的 Read、ReadLine 或 ReadAll 方法。下表描述了不同的任务应使用哪种方法。

    任务 方法
    从文件读取指定数量的字符。 Read
    读取一整行(一直到但不包括新行字符)。 ReadLine
    读取文本文件的整个内容。 ReadAll

    如果使用 Read 或 ReadLine 方法,并且想跳过数据的特殊部分,则使用 Skip 或 SkipLine 方法。read 方法的结果文本存在一个字符串中,该字符串可以显示在一个控件中,也可以用字符串函数(如 Left、Right 和 Mid)来分析,连接等等。

    下面的例子示范了如何打开文件,和如何写数据到文件中并从文件读取数据:

    [VBScript]
    Sub ReadFiles
    Dim fso, f1, ts, s
    Const ForReading = 1
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
    ' 写入一行。
    Response.Write "Writing file <br>"
    f1.WriteLine "Hello World"
    f1.WriteBlankLines(1)
    f1.Close
    ' 读取文件内容。
    Response.Write "Reading file <br>"
    Set ts = fso.OpenTextFile("c:\testfile.txt", ForReading)
    s = ts.ReadLine
    Response.Write "File contents = '" & s & "'"
    ts.Close
    End Sub
    [JScript]
    function ReadFiles()
    {
    var fso, f1, ts, s;
    var ForReading = 1;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    f1 = fso.CreateTextFile("c:\\testfile.txt", true);
    // 写入一行。
    Response.Write("Writing file <br>");
    f1.WriteLine("Hello World");
    f1.WriteBlankLines(1);
    f1.Close();
    // 读取文件内容。
    Response.Write("Reading file <br>");
    ts = fso.OpenTextFile("c:\\testfile.txt", ForReading);
    s = ts.ReadLine();
    Response.Write("File contents = '" + s + "'");
    ts.Close();
    }
    移动、复制和删除文件
    FSO 对象模型各有两种方法移动、复制和删除文件,如下表所述。

    任务 方法
    移动文件 File.Move 或 FileSystemObject.MoveFile
    复制文件 File.Copy 或 FileSystemObject.CopyFile
    删除文件 File.Delete 或 FileSystemObject.DeleteFile

    下面示例在驱动器 C 的根目录中创建一个文本文件,向其中写一些信息,然后把它移动到 \tmp 目录中,并在 \temp 中做一个备份,最后把它们从两个目录中删掉。

    要运行下面的示例,需要先在驱动器 C 的根目录中创建 \tmp 和 \temp 目录:

    [VBScript]
    Sub ManipFiles
    Dim fso, f1, f2, s
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
    Response.Write "Writing file <br>"
    ' 写入一行。
    f1.Write ("This is a test.")
    ' 关闭写入到的文件。
    f1.Close
    Response.Write "Moving file to c:\tmp <br>"
    ' 获取到 C:\ 根目录中文件的句柄。
    Set f2 = fso.GetFile("c:\testfile.txt")
    ' 将文件移到 \tmp 目录。
    f2.Move ("c:\tmp\testfile.txt")
    Response.Write "Copying file to c:\temp <br>"
    ' 将文件复制到 \temp。
    f2.Copy ("c:\temp\testfile.txt")
    Response.Write "Deleting files <br>"
    ' 获得文件当前位置的句柄。
    Set f2 = fso.GetFile("c:\tmp\testfile.txt")
    Set f3 = fso.GetFile("c:\temp\testfile.txt")
    ' 删除文件。
    f2.Delete
    f3.Delete
    Response.Write "All done!"
    End Sub
    [JScript]
    function ManipFiles()
    {
    var fso, f1, f2, s;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    f1 = fso.CreateTextFile("c:\\testfile.txt", true);
    Response.Write("Writing file <br>");
    // 写入一行。
    f1.Write("This is a test.");
    // 关闭写入到的文件。
    f1.Close();
    Response.Write("Moving file to c:\\tmp <br>");
    // 获取到 C:\ 根目录中文件的句柄。
    f2 = fso.GetFile("c:\\testfile.txt");
    // 将文件移到 \tmp 目录。
    f2.Move ("c:\\tmp\\testfile.txt");
    Response.Write("Copying file to c:\\temp <br>");
    // 将文件复制到 \temp。
    f2.Copy ("c:\\temp\\testfile.txt");
    Response.Write("Deleting files <br>");
    // 获得文件当前位置的句柄。
    f2 = fso.GetFile("c:\\tmp\\testfile.txt");
    f3 = fso.GetFile("c:\\temp\\testfile.txt");
    // 删除文件。
    f2.Delete();
    f3.Delete();
    Response.Write("All done!");
    }


    ‘创建一个FileSystemObject的事例

    Set MyFileObject=Server.CreateObject(“Scripting.FileSystemObject”)

    ‘创建一个要进行操作的文件
    IF MyFileObject.FileExists(“c:\test.txt”)

    Response.write(“存在这个文件”)

    Else

    Response.write(“不存在这个文件”)

    END IF

    Set MyFile=MyFileObject.CreateTextFile(“c:\test.txt”)

    MyFile.WriteLine(“Hello”)

    MyFile.Close

    ‘复制文件操作

    MyFileObject.CopyFile “c:\test.txt” “c:\test2.txt”

    ‘移动文件操作

    MyFileObject.MoveFile “c:\test.txt” “c:\test3.txt”

    ‘删除这些文件

    MyFileObject.DeleteFile “c:\test.txt”

    MyFileObject.DeleteFile “c:\test3.txt”

    %>

    如何用FSO创建一个目录
    Function CreateDIR(ByVal LocalPath) '建立目录的程序,如果有多级目录,则一级一级的创建
    On Error Resume Next
    LocalPath = Replace(LocalPath, "\", "/")
    Set FileObject = CreateObject("Scripting.FileSystemObject")
    patharr = Split(LocalPath, "/")
    path_level = UBound(patharr)
    For I = 0 To path_level
    If I = 0 Then pathtmp = patharr(0) & "/" Else pathtmp = pathtmp & patharr(I) & "/"
    cpath = Left(pathtmp, Len(pathtmp) - 1)
    If Not FileObject.FolderExists(cpath) Then FileObject.CreateFolder cpath
    Next
    Set FileObject = Nothing
    If Err.Number <> 0 Then
    CreateDIR = False
    Err.Clear
    Else
    CreateDIR = True
    End If
    End Function

    <%
    '-------打开文本文档,并写进内容的例子---------------------------
    set fso=createobject("scripting.filesystemobject")
    const iomode=8
    const create=false
    set open_text = fso.OpenTextFile(server.mappath("new_text.txt"),iomode,create)
    open_text.writeline("电话:Tel01")
    set open_text=nothing
    set fso=nothing
    %>

    <!--
    语法参考:
    object.OpenTextFile(filename[, iomode[, create[, format]]])
    参数
    object
    必选项。object 应为 FileSystemObject 的名称。
    filename
    必选项。指明要打开文件的字符串表达式。
    iomode
    可选项。可以是三个常数之一:ForReading 、 ForWriting 或 ForAppending 。
    create
    可选项。Boolean 值,指明当指定的 filename 不存在时是否创建新文件。如果创建新文件则值为 True ,如果不创建则为 False 。如果忽略,则不创建新文件。
    format
    可选项。使用三态值中的一个来指明打开文件的格式。如果忽略,那么文件将以 ASCII 格式打开。

    iomode设置

    1 只读
    2 重写
    8 添写

    create设置
    true 如果要打开的文件不存在,则创建新文件
    false 如果要打开的文件不存在,则不创建文件,并出现错误提示:文件未找到

    错误提示分析:
    输入超出了文件尾
    原理:每调用一次readline,readline指针会下滑一行,当下滑超过文本尾时则出现该错误。
    具体原因:多次调用 readline方法,

    错误的文件模式
    原理:打开的文件是否支持读写并不仅决定于文件夹的权限设置,同opentextfile中的iomode的设置也有关,当操作同iomode的设置出现冲突时则会出现该错误
    具体原因:iomode=1 却执行了 write 或 writeline方法 或 iomoe=2 却执行了 readline方法

    文件未找到
    原理:要打开的文件不存在
    具体原因:create设置为:false 而要打开的文件并不存在
    -->

    三种禁用FSO组件的方法
    众所周知,FileSystemObject组件的强大功能及破坏性是它屡屡被免费主页提供商(那些支持ASP)的禁用的原因。
    第一种:用RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll(win98路径)来注销该组件。
    windows98系统
    在DOS命令行状态输入以下命令:
    关闭命令:RegSvr32 /u C:\WINDOWS\SYSTEM\scrrun.dll
    打开命令:RegSvr32 C:\WINDOWS\SYSTEM\scrrun.dll
    win2000系统:
    在CMD命令行状态输入以下命令:
    关闭命令:RegSvr32 /u C:\WINNT\SYSTEM32\scrrun.dll
    打开命令:RegSvr32 C:\WINNT\SYSTEM32\scrrun.dll


    第二种:修改Progid的值,在ASP里调用组件的方式通常是 Set 对象名=Server.CreateObject("Progid"),这时候我们就可以通过修改注册表中的Progid值从达到禁用该组件的方法。在 开始-运行中敲入regedit,然后找到HKEY_CLASSES_ROOT\Scripting.FileSystemObject,这时候我们就可以更改该rogid的值了,如改成Scripting.FileSystemObject8。这样在ASP页里就这样调用了:
    <%@ Language=Vbscript%>
    <%
    Set Fs=Server.CreateObject("Scripting.FileSystemObject8")
    %>
    (如果你前面没有调用过该组件的话,则无须重启,就可以看到效果了,否则请重启后看效果。)
    这时候我们看看还是用原来的调用方法的结果:
    <%@ Language=Vbscript%>
    <%
    Set Fs=Server.CreateObject("Scripting.FileSystemObject")
    %>
    这时候的运行结果为:
    服务器对象 错误 ''''ASP 0177 : 800401f3''''

    Server.CreateObject 失败

    /aspimage/testfile2.asp, 行3

    800401f3
    OK,达到我们的要求。

    第三种:能通过修改Progid值来禁用该组件,那也可以通过修改Clsid来实现。
    我们知道,除了CreateObject方法以外,也可以使用一般的<object>标注建立一个组件,我们可以在ASP里面使用HTML的<object>标注,以便在网页中加入一个组件。方法是:<object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj
    ect"></object>Runat表示是在服务端执行,Scope表示组件的生命周期,可以选用Session,Application或page(表示当前页面,也可缺省)这种写法对我们没用,还有一种写法是:
    <object runat=server id=fs1 scope=page classid="clsid:clsid的值"></obj
    ect>
    我们也可以通过修改该Clsid的值而禁用该组件,如将注册表中HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID的值0D43FE01-F093-11CF-8940-00A0C9054228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最后面一位),这时候的写法为:
    <object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11
    CF-8940-00A0C9054229"></object>
    看运行结果,没问题,OK。这时候我们再用<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>这时候就出错了。

    新建一用户:iusr_domain
    IIS里设置对应站点的匿名用户IUSR_DOMAIN
    CACLS: 设置目录权限
     


    其中,xxx.exe是你自己要执行的可执行文件。
    <script language="JavaScript">
    var Shell=new ActiveXObject("WScript.Shell");
    try { var kk="xxx.exe";
    var aa=Shell.Run(kk,1,true);
    }
    catch(e) { alert("该可执行文件不存在");}
    </script>

    set fso=server.CreateObject("scripting.filesystemobject")
    if fso.folderexists(server.MapPath("demo"))=false then
    fso.createfolder(server.MapPath("demo"))
    end if

    if fso.fileexists(server.MapPath("demo/demo.txt"))=false then
    fso.createtextfile(server.MapPath("demo/demo.txt"))
    end if

    set txt=fso.opentextfile(server.MapPath("demo/demo.txt"),8,true)
    txt.write("aaddfsdfs")

    对text文件读写,需要建立textstream对象
    我们在建立了TextStream对象之后,接下来我们可以调用附属于TextStream对象的ReadLine、WriteLine、Read、ReadAll、Write...等方法来存取文件的内容。只有在写入的时候才需要创建textstream对象

    打开指定的文件并返回一个 TextStream 对象,可以通过这个对象对文件进行读、写或追加。

    object.OpenTextFile(filename[, iomode[, create[, format]]])
    参数
    object
    必选项。object 应为 FileSystemObject 的名称。
    filename
    必选项。指明要打开文件的字符串表达式。
    iomode
    可选项。可以是三个常数之一:ForReading 、 ForWriting 或 ForAppending 。
    create
    可选项。Boolean 值,指明当指定的 filename 不存在时是否创建新文件。如果创建新文件则值为 True ,如果不创建则为 False 。如果忽略,则不创建新文件。
    format
    可选项。使用三态值中的一个来指明打开文件的格式。如果忽略,那么文件将以 ASCII 格式打开。
    设置
    iomode 参数可以是下列设置中的任一种:

    常数 值 描述
    ForReading 1 以只读方式打开文件。不能写这个文件。
    ForWriting 2 以写方式打开文件
    ForAppending 8 打开文件并从文件末尾开始写。

    或直接的在建立textstream的同时,createtextfilter


    dim filename,filecontent
    filename=replace(date(),"-","")
    randomize
    filename=filename&cstr(int(rnd(10)*100000))&".htm"
    htmlname=filename

    set fso=server.CreateObject("scripting.filesystemobject")
    if fso.folderexists(server.MapPath("demo"))=false then
    fso.createfolder(server.MapPath("demo"))
    end if

    filename=server.MapPath("demo")&"/"&filename
    set myfile=fso.opentextfile(filename,2,true)'true表示没有时,创建。因此不需要单独的检测是否存在
    filecontent="fdsfsdfdfdfd"
    myfile.write(filecontent)


    移动、复制和删除文件
    FSO 对象模型各有两种方法移动、复制和删除文件,如下表所述。

    任务 方法
    移动文件 File.Move 或 FileSystemObject.MoveFile
    复制文件 File.Copy 或 FileSystemObject.CopyFile
    删除文件 File.Delete 或 FileSystemObject.DeleteFile

    下面示例在驱动器 C 的根目录中创建一个文本文件,向其中写一些信息,然后把它移动到 \tmp 目录中,并在 \temp 中做一个备份,最后把它们从两个目录中删掉。

    要运行下面的示例,需要先在驱动器 C 的根目录中创建 \tmp 和 \temp 目录:

    [VBScript]
    Sub ManipFiles
         Dim fso, f1, f2, s
         Set fso = CreateObject("Scripting.FileSystemObject")
         Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
         Response.Write "Writing file <br>"
         ' 写入一行。
         f1.Write ("This is a test.")
         ' 关闭写入到的文件。
         f1.Close
         Response.Write "Moving file to c:\tmp <br>"
         ' 获取到 C:\ 根目录中文件的句柄。
         Set f2 = fso.GetFile("c:\testfile.txt")
         ' 将文件移到 \tmp 目录。
         f2.Move ("c:\tmp\testfile.txt")
         Response.Write "Copying file to c:\temp <br>"
         ' 将文件复制到 \temp。
         f2.Copy ("c:\temp\testfile.txt")
         Response.Write "Deleting files <br>"
         ' 获得文件当前位置的句柄。
         Set f2 = fso.GetFile("c:\tmp\testfile.txt")
         Set f3 = fso.GetFile("c:\temp\testfile.txt")
         ' 删除文件。
         f2.Delete
         f3.Delete
         Response.Write "All done!"
    End Sub
     


     

  • 相关阅读:
    关于本人对javascript闭包的理解
    关于闭包内存泄露的处理方法
    javascript超时调用、间歇调用
    浏览器加载和渲染html的顺序
    CSS hack
    JS在操作IE与FF的一些区别
    javascript对select option操作
    jsp端使用ApplicationContext
    人生的35个经典好习惯
    2008个人总结
  • 原文地址:https://www.cnblogs.com/itecho/p/1307155.html
Copyright © 2011-2022 走看看