從VB6.0起,VB新增了FileSystemObject物件,這個物件可以取代以往許多要用API才能做到的事,如覆製資料夾、取得磁碟機資訊
等,在作一些相關處理時可以節省不少時間。要引用這個項目你必須以設定引用項目將 Microsoft ScriptingRuntime手動加入專
案,否則是沒有辦法使用的!我來概略說明一下使用的方法和功能
http://docs.google.com/View?id=dfh4b3dv_1365qsf8bzfq
等,在作一些相關處理時可以節省不少時間。要引用這個項目你必須以設定引用項目將 Microsoft ScriptingRuntime手動加入專
案,否則是沒有辦法使用的!我來概略說明一下使用的方法和功能
包括資料夾複製、檔案複製
建立資料夾
建立文字檔
刪除資料夾、檔案
取得Windows路徑,System路徑
取得所有的磁碟機
磁碟機總數(包含網路磁碟機等)
取得所有磁碟機物件
http://docs.google.com/View?id=dfh4b3dv_1365qsf8bzfq
更多影音教學與討論,請上[溫馨論壇]
資料夾複製、檔案複製
回覆刪除fso.CopyFolder "C:\ABC","C:\DEF"
fso.FileCopy "c:\123.txt","c:\456.txt"
建立資料夾
回覆刪除fso.CreateFolder "C:\ABC"
建立文字檔
回覆刪除fso.CreateTextFile "c:\123.txt"
刪除資料夾、檔案
回覆刪除fso.DeleteFolder "C:\ABC"
fso.DeleteFile "c:\123.txt"
取得Windows路徑,System路徑
回覆刪除fso.GetSpecialFolder(WindowsFolder)
fso.GetSpecialFolder(SystemFolder)
取得所有的磁碟機
回覆刪除磁碟機總數(包含網路磁碟機等) - fso.Drives.Count
取得所有磁碟機物件
回覆刪除Dim Drivetemp As Drive
ReDim DriveObject(1 To fso.Drives.Count)
Dim i As Integer
For Each Drivetemp In fso.Drives
i = i + 1
Set DriveObject(i) = Drivetemp
Next
查詢該磁碟機的可用空間
回覆刪除fso.AvailableSpace
或
fso.FreeSpace
查詢該磁碟機的總容量
回覆刪除fso.TotalSize
磁碟機的代碼
回覆刪除fso.DriveLetter
fso.RootPath
*DriveLetter只有代碼
*RootPath則可查出根目錄的路徑
磁碟機的類別
回覆刪除fso.DriveType
傳回值分別代表
Unknown - "無從判斷"
Removable - "抽取式磁碟"
Fixed - "硬碟"
Remote - "遠端(網路)儲存裝置"
CDRom - "光碟機"
RamDisk - "RAM Disk"
取得資料夾的資料
回覆刪除Dim fs As New FileSystemObject ' 建立 FileSystemObject
Dim fd As Folder ' 宣告 Folder 物件
Dim i As Integer
Set fd = fs.GetFolder("c:\")
取得子資料夾的總數
回覆刪除Dim fs As New FileSystemObject ' 建立 FileSystemObject
Dim fd As Folder ' 宣告 Folder 物件
Dim i As Integer
Set fd = fs.GetFolder("c:\")
fd.SubFolders.Count
ReDim sfd(1 To fd.SubFolders.Count) As Folder
For Each fd In fd.SubFolders
i = i + 1
Set sfd(i) = Folder
List1.AddItem sfd(i).Name
Next
這個方法只能取得一層子資料夾,如果要取得所有資料夾則
須利用遞迴重覆執行
Folder的屬性比較特殊的是ShortPath可以直接取得該
Folder的短檔名及DateCreated、DateLastAccessed、
DateLastModified可取得建立時間及變更時間等
至於File物件只要改用GetFile方法,其餘沒有什麼特別不同的方法
範例1.
回覆刪除檔案的建立時間、副檔名、大小
Dim getInfo As System.IO.FileInfo
getInfo = My.Computer.FileSystem.GetFileInfo("C:\WPD04.DOC")
MsgBox("這個檔案的建立時間為" & getInfo.CreationTime & Chr(10) & _
"這個檔案的副檔名為" & getInfo.Extension & Chr(10) & _
"這個檔案的大小為" & getInfo.Length & "位元組")
My.Computer.FileSystem.CopyFile("C:\WPD04.DOC", "D:\WPD04.DOC")
Close()
範例2.
回覆刪除是否唯讀?
Dim getInfo As System.IO.DirectoryInfo
getInfo = My.Computer.FileSystem.GetDirectoryInfo("C:\WINDOWS")
If (getInfo.Attributes And System.IO.FileAttributes.ReadOnly) > 0
Then
MsgBox("C:\WINDOWS是唯讀的")
Else
MsgBox("C:\WINDOWS不是唯讀的")
End If
Close()
範例3.
回覆刪除磁碟的相關資訊:
Dim getInfo As System.IO.DriveInfo
getInfo = My.Computer.FileSystem.GetDriveInfo("C:\")
MsgBox("C:磁碟的標籤為" & getInfo.VolumeLabel & Chr(10) & _
"C:磁碟的類型為" & getInfo.DriveType & Chr(10) & _
"C:磁碟的全部空間為" & getInfo.TotalSize & Chr(10) & _
"C:磁碟的檔案系統為" & getInfo.DriveFormat)
MsgBox(System.Environment.SystemDirectory)
Close()
範例4.
回覆刪除讀取文字檔:
Dim content As String
content = My.Computer.FileSystem.ReadAllText("c:\WPD04.DOC",
System.Text.Encoding.Default)
MsgBox(content)
Close()
範例5.
回覆刪除逐行讀取文字檔:
Dim textreader As System.IO.StreamReader
textreader=My.Computer.FileSystem.OpenTextFileReader("C:\P5PE1501.TXT",
System.Text.Encoding.Unicode)
Dim aLine As String = textreader.ReadLine()
While Not (aLine Is Nothing)
content = content & aLine & Chr(10)
aLine = textreader.ReadLine()
End While
textreader.Close()
MsgBox(content)
Close()
6.剖析文字檔:
回覆刪除Using textparser As New
Microsoft.VisualBasic.FileIO.TextFieldParser("C:\P5PE1501.TXT")
textparser.TextFieldType = FileIO.FieldType.Delimited
textparser.SetDelimiters(",")
Dim content As String = ""
While Not textparser.EndOfData
Try
Dim row As String() = textparser.ReadFields()
For Each field As String In row
content = content & field & Chr(10)
Next
Catch ex As
Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("無法使用指定的格式剖析文字檔")
End Try
End While
MsgBox(content)
End Using
Close()
範例7.
回覆刪除剖析文字檔:
Using textparser As New
Microsoft.VisualBasic.FileIO.TextFieldParser("C:\score.txt",
System.Text.Encoding.Default)
textparser.TextFieldType = FileIO.FieldType.FixedWidth
textparser.SetFieldWidths(2, 3, -1)
Dim content As String = ""
While Not textparser.EndOfData
Try
Dim row As String() = textparser.ReadFields()
For Each field As String In row
content = content & field & Chr(10)
Next
Catch ex As
Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("無法使用指定的格式剖析文字檔")
End Try
End While
MsgBox(content)
End Using
Close()