隨筆-16  評論-8  文章-30  trackbacks-0
          使用 FileSystemObject (FSO) 對象模式,可以有計劃地處理驅動器和文件夾,就像在 Windows 資源管理器中交互式地處理它們一樣。可以復制和移動文件夾,獲取有關驅動器和文件夾的信息,等等。

          獲取有關驅動器的信息
          可以用 Drive 對象來獲得有關各種驅動器的信息,這些驅動器是實物地或通過網絡連接到系統上的。它的屬性可以用來獲得下面的信息內容:

          • 驅動器的總容量,以字節為單位(TotalSize 屬性)
          • 驅動器的可用空間是多少,以字節為單位(AvailableSpaceFreeSpace 屬性)
          • 哪個號被賦給了該驅動器(DriveLetter 屬性)
          • 驅動器的類型是什么,如可移動的、固定的、網絡的、CD-ROM 或 RAM 磁盤(DriveType 屬性)
          • 驅動器的序列號(SerialNumber 屬性)
          • 驅動器使用的文件系統類型,如 FAT、FAT32、NTFS 等等(FileSystem 屬性)
          • 驅動器是否可以使用(IsReady 屬性)
          • 共享和/或卷的名字(ShareNameVolumeName 屬性)
          • 驅動器的路徑或根文件夾(PathRootFolder 屬性)
          請考察示例代碼,來領會如何在 FileSystemObject 中使用這些屬性。

          Drive 對象的用法示例
          使用 Drive 對象來收集有關驅動器的信息。在下面的代碼中,沒有對實際的 Drive 對象的引用;相反,使用 GetDrive 方法來獲得現有 Drive 對象的引用(在這個例子中就是 drv)。

          下面示例示范了如何在 VBScript 中使用 Drive 對象:

          Sub ShowDriveInfo(drvPath)
            Dim fso, drv, s
            Set fso = CreateObject("Scripting.FileSystemObject")
            Set drv = fso.GetDrive(fso.GetDriveName(drvPath))
            s = "Drive " & UCase(drvPath) & " - "
            s = s & drv.VolumeName & "<br>"
            s = s & "Total Space: " & FormatNumber(drv.TotalSize / 1024, 0)
            s = s & " Kb" & "<br>"
            s = s & "Free Space: " & FormatNumber(drv.FreeSpace / 1024, 0)
            s = s & " Kb" & "<br>"
            Response.Write s
          End Sub
          
          下面的代碼說明在 JScript 中實現同樣的功能:
          function ShowDriveInfo1(drvPath)
          {
            var fso, drv, s ="";
            fso = new ActiveXObject("Scripting.FileSystemObject");
            drv = fso.GetDrive(fso.GetDriveName(drvPath));
            s += "Drive " + drvPath.toUpperCase()+ " - ";
            s += drv.VolumeName + "<br>";
            s += "Total Space: " + drv.TotalSize / 1024;
            s += " Kb" + "<br>"; 
            s += "Free Space: " + drv.FreeSpace / 1024;
            s += " Kb" + "<br>";
            Response.Write(s);
          }
          
          處理文件夾
          在下面的表中,描述了普通的文件夾任務和執行它們的方法。

          任務 方法
          創建文件夾。 FileSystemObject.CreateFolder
          刪除文件夾。 Folder.DeleteFileSystemObject.DeleteFolder
          移動文件夾。 Folder.MoveFileSystemObject.MoveFolder
          復制文件夾。 Folder.CopyFileSystemObject.CopyFolder
          檢索文件夾的名字。 Folder.Name
          如果文件夾在驅動器上存在,則找出它。 FileSystemObject.FolderExists
          獲得現有 Folder 對象的實例。 FileSystemObject.GetFolder
          找出文件夾的父文件夾名。 FileSystemObject.GetParentFolderName
          找出系統文件夾的路徑。 FileSystemObject.GetSpecialFolder

          請考察示例代碼,來看看在 FileSystemObject 中使用了多少種這些的方法和屬性。

          下面的示例示范了如何在 VBScript 中使用 FolderFileSystemObject 對象,來操作文件夾和獲得有關它們的信息:

          Sub ShowFolderInfo()
            Dim fso, fldr, s
            ' 獲得 FileSystemObject 的實例。
            Set fso = CreateObject("Scripting.FileSystemObject")
            ' 獲得 Drive 對象。
            Set fldr = fso.GetFolder("c:")
            ' 打印父文件夾名字。
            Response.Write "Parent folder name is: " & fldr & "<br>"
            ' 打印驅動器名字。
            Response.Write "Contained on drive " & fldr.Drive & "<br>"
            ' 打印根文件名。
            If fldr.IsRootFolder = True Then
              Response.Write "This is the root folder." & ""<br>"<br>"
            Else
              Response.Write "This folder isn't a root folder." & "<br><br>" 
            End If
            ' 用 FileSystemObject 對象創建新的文件夾。
            fso.CreateFolder ("C:\Bogus")
            Response.Write "Created folder C:\Bogus" & "<br>"
            ' 打印文件夾的基本名字。
            Response.Write "Basename = " & fso.GetBaseName("c:\bogus") & "<br>"
            ' 刪除新創建的文件夾。
            fso.DeleteFolder ("C:\Bogus")
            Response.Write "Deleted folder C:\Bogus" & "<br>"
          End Sub
          
          下面的示例顯示如何在 JScript 中使用 FolderFileSystemObject 對象:
          function ShowFolderInfo()
          {
            var fso, fldr, s = "";
            // 獲得 FileSystemObject 的實例。
            fso = new ActiveXObject("Scripting.FileSystemObject");
            // 獲得 Drive 對象。
            fldr = fso.GetFolder("c:");
            // 打印父文件夾名。
            Response.Write("Parent folder name is: " + fldr + "<br>");
            // 打印驅動器名字。
            Response.Write("Contained on drive " + fldr.Drive + "<br>");
            // 打印根文件名。
            if (fldr.IsRootFolder)
              Response.Write("This is the root folder.");
            else
              Response.Write("This folder isn't a root folder.");
            Response.Write("<br><br>");
            // 用 FileSystemObject 對象創建新的文件夾。
            fso.CreateFolder ("C:\\Bogus");
            Response.Write("Created folder C:\\Bogus" + "<br>");
            // 打印文件夾的基本名。
            Response.Write("Basename = " + fso.GetBaseName("c:\\bogus") + "<br>");
            // 刪除新創建的文件夾。
            fso.DeleteFolder ("C:\\Bogus");
            Response.Write("Deleted folder C:\\Bogus" + "<br>");
          }
          
           

          處理文件
          有兩種主要的文件處理類型:

          • 創建、添加或刪除數據,以及讀取文件
          • 移動、復制和刪除文件
          創建文件
          創建空文本文件(有時被叫做“文本流”)有三種方法。

          第一種方法是用 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 中使用 CreateTextFile 方法。

          創建文本文件的第二種方法是,使用 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);
          
          添加數據到文件中
          一旦創建了文本文件,使用下面的三個步驟向文件添加數據:

          1. 打開文本文件。
          2. 寫入數據。
          3. 關閉文件。
          要打開現有的文件,則使用 FileSystemObject 對象的 OpenTextFile 方法或 File 對象的 OpenAsTextStream 方法。

          要寫數據到打開的文本文件,則根據下表所述任務使用 TextStream 對象的 WriteWriteLineWriteBlankLines 方法。

          任務方法
          向打開的文本文件寫數據,不用后續一個新行字符。Write
          向打開的文本文件寫數據,后續一個新行字符。WriteLine
          向打開的文本文件寫一個或多個空白行。WriteBlankLines

          請考察示例代碼,來領會如何在 FileSystemObject 對象中使用 WriteWriteLineWriteBlankLines 方法。

          要關閉一個打開的文件,則使用 TextStream 對象的 Close 方法。

          請考察示例代碼,來領會如何在 FileSystemObject 中使用 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 對象的 ReadReadLineReadAll 方法。下表描述了不同的任務應使用哪種方法。

          任務方法
          從文件讀取指定數量的字符。Read
          讀取一整行(一直到但不包括新行字符)。ReadLine
          讀取文本文件的整個內容。ReadAll

          請考察示例代碼,來領會如何在 FileSystemObject 中使用 ReadAllReadLine 方法。

          如果使用 ReadReadLine 方法,并且想跳過數據的特殊部分,則使用 SkipSkipLine 方法。read 方法的結果文本存在一個字符串中,該字符串可以顯示在一個控件中,也可以用字符串函數(如 LeftRightMid)來分析,連接等等。

          下面的 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.MoveFileSystemObject.MoveFile
          復制文件File.CopyFileSystemObject.CopyFile
          刪除文件File.DeleteFileSystemObject.DeleteFile

          請考察示例代碼,來領會在 FileSystemObject 中刪除文件的兩種方法。

          下面的 VBScript 示例,在驅動器 C 的根目錄中創建一個文本文件,向其中寫一些信息,然后把它移動到 \tmp 目錄中,并在 \temp 中做一個備份,最后把它們從兩個目錄中刪掉。

          要運行下面的示例,需要先在驅動器 C 的根目錄中創建 \tmp 和 \temp 目錄:

          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 的根目錄(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 的根目錄(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!");
          }
          
          posted on 2005-06-10 15:07 楚客 閱讀(318) 評論(0)  編輯  收藏 所屬分類: HTML
          主站蜘蛛池模板: 腾冲县| 宁都县| 霍林郭勒市| 承德市| 萨嘎县| 宜州市| 两当县| 双辽市| 耒阳市| 长沙县| 东源县| 平罗县| 蓝田县| 海口市| 田东县| 岳池县| 新营市| 拉萨市| 建昌县| 河北区| 日喀则市| 潮安县| 汤阴县| 任丘市| 蒲江县| 乐安县| 青海省| 玉山县| 普格县| 平定县| 开阳县| 玛纳斯县| 濮阳市| 镇雄县| 固原市| 育儿| 武乡县| 太原市| 馆陶县| 灵丘县| 突泉县|