#眉標=.NET #副標=.NET Namespace專欄 #大標= System.IO - 檔案的處理和資料串流 #作者=文/彭靖灝 -----box----- 程式1 With FolderBrowserDialog1 If .ShowDialog() = DialogResult.OK Then txtStartFolder.Text = .SelectedPath myMainFolder = New DirectoryInfo(txtStartFolder.Text) lstFolders.Items.Clear() SubFolders = myMainFolder.GetDirectories For i = 0 To SubFolders.Length - 1 lstFolders.Items.Add(SubFolders(i).Name) Next lstFolders.SelectedIndex = 0 End If End With -----end----- -----box----- 程式2 Dim SelectedFolder As DirectoryInfo Dim FolderInfo As String ' Get folder information SelectedFolder = New DirectoryInfo(txtStartFolder.Text _ & "\" & lstFolders.SelectedItem.ToString & "\") FolderInfo &= "路徑:" & SelectedFolder.FullName & _ vbNewLine FolderInfo &= "屬性:" & _ SelectedFolder.Attributes.ToString & vbNewLine txtFolderAtt.Text = FolderInfo -----end----- -----box----- 程式3 Dim SelectedFile As IO.FileInfo Dim FileInfo As String Dim FileName As String FileName = lstFiles.SelectedItem.ToString SelectedFile = New IO.FileInfo(txtStartFolder.Text & _ "\" & lstFolders.SelectedItem.ToString & _ "\" & FileName) With SelectedFile FileInfo &= "資料夾:" & .DirectoryName & vbNewLine FileInfo &= "建立時間:" & .CreationTime & vbNewLine FileInfo &= "大小:" & .Length.ToString("#,##0") & "B" _ & vbNewLine FileInfo &= "最近存取時間:" & .LastAccessTime & _ vbNewLine FileInfo &= "屬性:" & .Attributes.ToString & _ vbNewLine End With txtFileAtt.Text = FileInfo -----end----- -----box----- 程式4 Private Sub ReadFile(ByVal FileToRead As FileStream) Dim sr As New StreamReader(FileToRead, System. _ Text.Encoding.Default) txtContent.Text = sr.ReadToEnd sr.Close() End Sub -----end----- -----box----- 程式5 Dim fi As IO.FileInfo Dim sw As StreamWriter If txtSaveFilePath.Text = "" Then Exit Sub Else fi = New IO.FileInfo(txtSaveFilePath.Text) sw = fi.CreateText sw.Write(txtContent.Text) sw.Close() End If -----end----- -----box----- 程式6 Dim fs As FileStream Dim fi As IO.FileInfo With OpenFileDialog1 .Filter = "所有檔案(*.*)|*.*|文字檔(*.txt)|*.txt" .FilterIndex = 1 If .ShowDialog = DialogResult.OK Then txtReadFilePath.Text = .FileName fs = .OpenFile ReadFile(fs) fi = New IO.FileInfo(.FileName) txtSaveFilePath.Text = .FileName.Replace(fi.Extension, ".bak") End If End With -----end----- -----box----- 程式7 Private Sub MonitorDirectory(ByVal FolderPath As String) Dim myWatcher As New FileSystemWatcher ' 指定監控路徑及篩選類型 myWatcher.Path = FolderPath myWatcher.NotifyFilter = NotifyFilters.DirectoryName _ Or NotifyFilters.LastAccess _ Or NotifyFilters.LastWrite _ Or NotifyFilters.FileName ' 指定事件處理常式 AddHandler myWatcher.Changed, AddressOf Watcher_OnChange AddHandler myWatcher.Deleted, AddressOf Watcher_OnChange AddHandler myWatcher.Created, AddressOf Watcher_OnChange ' 啟動監控 myWatcher.EnableRaisingEvents = True End Sub -----end----- -----box----- 程式8 Private Sub Watcher_OnChange(ByVal source As Object, _ ByVal e As IO.FileSystemEventArgs) txtEventList.Text &= "檔案:" & e.FullPath & "-->" _ & WatcherChangeTypesString(e.ChangeType) & _ vbNewLine End Sub -----end----- 程式9 Private Function WatcherChangeTypesString_ (ByVal Index As Integer) As String Select Case Index Case WatcherChangeTypes.All Return "All" Case WatcherChangeTypes.Changed Return "Changed" Case WatcherChangeTypes.Created Return "Created" Case WatcherChangeTypes.Deleted Return "Deleted" Case WatcherChangeTypes.Renamed Return "Renamed" Case Else Return "Unknown" End Select End Function -----end----- -----box----- 相關資源 1. Isolated Storage:http://msdn.microsoft.com/library/en-us/cpguide/html/cpconisolatedstorage.asp 2. 非定步檔案存取:http://msdn.microsoft.com/library/en-us/cpguide/html/cpconasynchronousfileio.asp 3. 本專欄範例程式:http://www.xpower.com.tw/Resources/SampleCodes -----end-----