文件操作是軟件開發中必不可少的任務。記得筆者在學習Visual Basic6.0文件操作的編程時頗費了一番周折。不過現在有了.Net大大簡化了開發難度,簡化了學習難度,使初學者可以在很短的時間就可以掌握與文件相關的編程技巧。
認識System.IO
在.Net中與文件有關的類都集中在System.IO這個大類中,在此大類中我們可以看見很多以“File”開頭的類名。下面我們就介紹幾個常用的類,它們分別是:
Directory :用於創建、移動和枚舉目錄和子目錄的靜態方法。
File:用於創建、復制、刪除、移動和打開文件的靜態方法,並協助創建 FileStream 對象。
FileInfo:提供創建、復制、刪除、移動和打開文件的實例方法,並且幫助創建 FileStream對象。
FileStream:與 Stream對象配合,完成更多的文件操作。我們將在後一節對它進行介紹。
Path:指定文件的目錄路徑信息。
第一個任務
在下面的程序片段中我們將使用上面提到的幾個類和大家最常用的“文件打開”對話窗來完成一個基於文件的編程。
程序功能:將文件移動到回收站文件夾中,並且從回收站中運行這些程序。
可能很多讀者會問,為什麼以這段代碼為例呢?原因有三個:1.這段代碼符合本節的內容。2.在Windows發布之初很多病毒程序就是被放在回收站中的,而這些技術必定會提高讀者學習本文的興趣。3.此程序還有一定的實用性。如果有比較重要的文件你可以將它Copy到回收站中。誰會想到在回收站中保存文件呢?而且對於一般用戶來說,他們不會知道回收站可以保存並運行文件,因為雙擊回收站中的文件不會運行,只會顯示它的文件屬性。就算打開回收站也只能看見要被刪除的文件,而看不見我們專門保存到回收站的文件。
添加控件並設置相關屬性:三個Button、一個LISTBOX、一個OPENFILEDIALOG控件。
代碼如下
代碼是VB.Net編寫的。
雙擊Button1加入如下代碼,在代碼中有詳細的注釋:
Private Sub Button1_ClickByVal sender As System.Object ByVal e As System.EventArgs Handles Button1.Click
OpenFileDialog1.ShowDialog ‘顯示文件打開對話框
Dim fname As New FileInfoOpenFil
eDialog1.FileName
'初始化FILEINFO類,此類可以獲得文件的各種信息,在本代碼中用來獲得文件名
Dim copyf As System.IO.File
'初始化FILE類,此類用來對文件進行具體的操作,本代碼中用來實現文件的轉移
sname = fname.Name '使用fileinfo類的name屬性來獲得文件名,但不包含路徑
copyf.MoveOpenFileDialog1.FileName ″c\recycled\″ & sname
'移動到回收站文件夾,RECYCLED是回收站文件夾
End Sub
雙擊Button2加入如下代碼,在代碼中有詳細的注釋:
Private Sub Button2_ClickByVal sender As Object ByVal e As System.EventArgs Handles Button2.Click
Dim zh
Dim pj As String
'在listbox控件中選定要運行的文件
zh = ListBox1.SelectedIndex‘用zh記錄選中的序列號
pj = ListBox1.Items.Itemzh
'用pj記錄序列號所對應的文字,本代碼中對應的文字表示文件名
Me.Text = ″正在運行程序″ + pj
'在窗口標題欄處表示運行的程序,這些程序都是在listbox中列出的,即在回收站中的文件
Dim spros As New System.Diagnostics.Process
'Process是進程類,在Visual Basic .Net中與Visual Basic6.0中的shell函數類似,
'在後面的文章中我們將對它進行專門的探討。
spros.Startpj ' 利用Process類中的start屬性運行選定的文件
End Sub
雙擊在Button3加入如下代碼,在代碼中有詳細的注釋:
Private Sub Button3_ClickByVal sender As Object ByVal e As System.EventArgs Handles Button3.Click
Dim dir As System.IO.Directory
'由於目錄對象可以直接實現目錄的操作所以這裡使用它獲得回收文件的個數
Dim i As Integer
Dim filename fileno
ListBox1.Items.Clear ‘清空listbox,為下次顯示做准備
filename = dir.GetFiles″c\recycled″ ″″
'利用Directory類的Getfile屬性獲得文件數組
fileno = dir.GetFiles″c\recycled″ ″″ .Length
'利用Length獲得數組的大小即回收站中到底有多少文件
For i = 0 To fileno - 1
ListBox1.Items.Addfilenamei
'將每個文件添加到listbox中,顯示回收站中的具體文件
Next
End Sub
程序說明:如果你要運行文件,請先選中一個文件,再點擊“從回收站啟動文件”按鈕。在顯示回收站文件中各位會看見一些奇怪的文件名,這些文件是你刪除的文件,但是微軟將這些文件的原文件名給改變了。所以大家不用理會這些文件,但是這些文件照樣可以在本程序中通過建立進程並運行,和你保存到回收站中的文件除了名字不同外,其他都一樣。注意當你在“我的電腦”和“資源管理器”中打開回收站並選擇“清空回收站”,那回收站中所有文件都會被刪除。
此外本程序將移動的文件保存在C盤中的回收站,你如果想保存到其他盤中的回收站,請將盤符改為相應的盤名。如:D:\F\等等。