文件目錄的遍歷操作是相對(duì)復(fù)雜一點(diǎn),原理是利用Directory類的GetDirectories方法和GetFiles方法,進(jìn)行循環(huán)讀取文件或是子目錄的操作。我們結(jié)合實(shí)例來介紹一下。
10.1.2 目錄的遍歷
在FilesCon項(xiàng)目里新建一個(gè)Web窗體,命名為DirCon_Sample2.aspx,添加四個(gè)Label標(biāo)簽控件用于顯示信息,添加三個(gè)ListBox控件分別用于顯示驅(qū)動(dòng)器、文件目錄、文件信息。
DirCon_Sample2.aspx頁面的主要HTML代碼如下:
<form id="Form1" method="post" runat="server"> <FONT face="宋體"> <asp:ListBox id="filelist" runat="server" Width="128px" Height="120px" Font-Size="X-Small"></asp:ListBox> <asp:Label id="Label4" runat="server" Width="64px" Font-Size="X-Small" BackColor="#E0E0E0">磁盤列表</asp:Label> <asp:Label id="Label3" srunat="server" Width="96px" Font-Size="X-Small" BackColor="#E0E0E0">目錄列表</asp:Label> <asp:ListBox id="dirlist" runat="server" Width="112px" Height="120px" AutoPostBack="True" Font-Size="X-Small"></asp:ListBox> <asp:Label id="Label1"runat="server" Width="320px" Height="56px" Font-Size="X-Small" BackColor="#E0E0E0">當(dāng)前路徑</asp:Label> <asp:Label id="Label2" srunat="server" Width="88px" Font-Size="X-Small" BackColor="#E0E0E0">文件列表</asp:Label> <asp:ListBox id="disklist" runat="server" Width="72px" Height="120px" AutoPostBack="True" Font-Size="X-Small"></asp:ListBox> </FONT> </form>
DirCon_Sample2.aspx的主要邏輯代碼如下:
‘------code begin--------- ‘----省略命名空間引用 Public Class DirCon_Sample2 Inherits System.Web.UI.Page #Region " Web 窗體設(shè)計(jì)器生成的代碼 " ‘此處省略窗體設(shè)計(jì)器生成的代碼#End Region ‘聲明公用變量 Directory類 和字符串變量 Public mydir As System.IO.Directory Public str As String Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ‘在此處放置初始化頁的用戶代碼 ‘第一次加載窗體時(shí),初始化各控件默認(rèn)信息 ‘我們?cè)O(shè)計(jì)為初始化時(shí)候,讀取第一個(gè)驅(qū)動(dòng)器的目錄和文件信息 ‘由于目錄層次有不確定性,為了便于實(shí)例說明,我們只讀取磁盤一下兩層目錄信息 If Not IsPostBack Then getdisk() getdir(disklist.Items(0).Text) getfiles(disklist.Items(0).Text) End If End Sub ‘獲取系統(tǒng)驅(qū)動(dòng)器信息的通用過程,并把信息加載到disklist控件中 Sub getdisk() disklist.Items.Clear() ‘利用Directory類的GetLogicalDrives方法獲取系統(tǒng)驅(qū)動(dòng)器信息 ‘并循環(huán)讀出,加載到disklist控件中 For Each str In mydir.GetLogicalDrives() disklist.Items.Add(str) Next End Sub ‘獲取文件目錄的通用過程,并把獲取的信息加載到dirlist控件中 Sub getdir(ByVal dirpath As String) dirlist.Items.Clear() ‘利用Directory類的GetDirectories方法獲取目錄信息 ‘并循環(huán)讀出,加載到dirlist控件中 Try For Each str In mydir.GetDirectories(dirpath) dirlist.Items.Add(str) Next Catch ex As Exception Label1.Text = "程序出錯(cuò)!<br>" & ex.Message End Try End Sub ‘獲取文件目錄中文件信息的通用過程,并把獲取的信息加載到filelist控件中 Sub getfiles(ByVal dirpath As String) filelist.Items.Clear() ‘利用Directory類的getfiles方法獲取目錄中所有的文件信息 ‘并循環(huán)讀出,加載到filelist控件中 Try For Each str In mydir.GetFiles(dirpath) filelist.Items.Add(str) Next Catch ex As Exception Label1.Text = "程序出錯(cuò)!<br>" & ex.Message End Try ‘顯示當(dāng)前查看目錄 Label1.Text = "當(dāng)前查看目錄- " & dirpath End Sub ‘改變查看驅(qū)動(dòng)器 Private Sub disklist_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles disklist.SelectedIndexChanged getdir(disklist.SelectedItem.Text) getfiles(disklist.SelectedItem.Text) End Sub ‘改變查看目錄 Private Sub dirlist_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dirlist.SelectedIndexChanged getfiles(dirlist.SelectedItem.Text) End Sub End Class ‘----cdoe end --------
10.2 文件的操作
10.2.1 文件的讀寫
在進(jìn)行文件讀寫的時(shí)候,我們一般只是對(duì)文本文件進(jìn)行操作,在這個(gè)實(shí)例中我們一讀寫一個(gè)txt文件為例。
在項(xiàng)目中新建一個(gè)Web窗體,明天為files_Sample1.aspx,在該web窗體里添加兩個(gè)Button控件用于觸發(fā)執(zhí)行事件,兩個(gè)TextBox控件用來顯示文本。files_Sample1.aspx頁面的主要HTML代碼如下:
<form id="Form1" method="post" runat="server"> <asp:TextBox id="TextBox1" runat="server" Height="112px" Width="152px" TextMode="MultiLine"></asp:TextBox> <asp:TextBox id="TextBox2" runat="server" Height="112px" Width="160px" TextMode="MultiLine"> </asp:TextBox> <asp:Button id="Button1" runat="server" Text="寫入文件內(nèi)容"></asp:Button> <asp:Button id="Button2" runat="server" Text="讀取文件內(nèi)容"></asp:Button> </form>
files_Sample1.aspx.vb的邏輯編碼如下:
‘------code begin--------- ‘----省略命名空間引用 Public Class files_Sample1_aspx Inherits System.Web.UI.Page #Region " Web 窗體設(shè)計(jì)器生成的代碼 " ‘此處省略窗體設(shè)計(jì)器生成的代碼 #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ‘在此處放置初始化頁的用戶代碼 End Sub ‘文件的寫操作事件過程 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ‘聲明StreamWriter,用來進(jìn)行文件的寫操作 ‘該類進(jìn)行寫操作時(shí),如果文件已經(jīng)存在,則直接進(jìn)行覆蓋 ‘如果沒有文件,則新建文件 Dim sw As System.IO.StreamWriter Try ‘利用File類的CreateText新建文件,并指定路徑 sw = System.IO.File.CreateText(Server.MapPath(".") + "\TestTXT.txt") ‘把textbox1中的文本內(nèi)容以文本流寫入 sw.WriteLine(TextBox1.Text.ToString) ‘關(guān)閉文本流 sw.Close() ‘提示成功~! Response.Write("<script> alert(‘TestTXT.txt文件已經(jīng)寫入內(nèi)容!‘);</script>") Catch ex As Exception Response.Write("程序執(zhí)行出,信息描述如下:<br>" & ex.Message) End Try End Sub ‘文件讀出操作事件過程 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ‘聲明StreamReader,用來進(jìn)行文件的讀出操作 Dim sr As System.IO.StreamReader ‘檢測是否存在 If System.IO.File.Exists(Server.MapPath(".") + "\TestTXT.txt") Then Try sr = System.IO.File.OpenText(Server.MapPath(".") + "\TestTXT.txt") TextBox2.Text = "以下是從TestTXT.txt讀出的內(nèi)容" TextBox2.Text += vbCrLf & "----------------" & vbCrLf & sr.ReadToEnd sr.Close() Catch ex As Exception Response.Write("程序執(zhí)行出,信息描述如下:<br>" & ex.Message) End Try Else ‘如果不存在該文件,提示! Response.Write("<script> alert(‘TestTXT.txt文件不存在!‘);</script>") End If End Sub End Class ‘------code end -----------
10.2.2 文件的追加和刪除
文件刪除操作是把文件刪除掉,追加操作是在已經(jīng)存在的文件中,在原有內(nèi)容的尾處追加新的內(nèi)容。下面我們來通過實(shí)例驗(yàn)證。
在FileCon項(xiàng)目里添加一個(gè)新的web窗體,命名為files_Sample2.aspx,添加一個(gè)TextBox控件,用來填寫追加內(nèi)容,兩個(gè)Button控件,用來執(zhí)行命令。files_Sample2.aspx頁面的主要HTML代碼如下:
<form id="Form1" method="post" runat="server"> <TABLE id="Table1" style="WIDTH: 300px; HEIGHT: 176px" cellSpacing="1" cellPadding="1" width="300" border="1"> <TR align="center"> <TD align="center">文本內(nèi)容<br> <asp:textbox id="TextBox1" runat="server" Width="176px" Height="148px" TextMode="MultiLine"></asp:textbox><br> <asp:button id="Button2" runat="server" Width="96px" Height="28px" Text="刪除文件"></asp:button></TD> <TD align="center">填寫追加內(nèi)容:<br> <asp:textbox id="TextBox2" runat="server" Width="152px" Height="144px" TextMode="MultiLine"></asp:textbox><br> <asp:button id="Button1" runat="server" Width="112px" Height="32px" Text="追加操作"></asp:button></TD> </TR> </TABLE> </form>
files_Sample2.aspx頁面的主要邏輯代碼如下:
‘------code begin--------- ‘----省略命名空間引用 Public Class files_Sample2 Inherits System.Web.UI.Page #Region " Web 窗體設(shè)計(jì)器生成的代碼 " ‘此處省略窗體設(shè)計(jì)器生成的代碼 #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ‘在此處放置初始化頁的用戶代碼 If Not IsPostBack Then textread() End If End Sub ‘讀取文件內(nèi)容的通用過程 Sub textread() Dim sr As System.IO.StreamReader Try sr = System.IO.File.OpenText(Server.MapPath(".") & "\TestTXT.txt") TextBox1.Text = sr.ReadToEnd sr.Close() Catch ex As Exception End Try End Sub ‘文件追加事件過程 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sw As System.IO.StreamWriter Try ‘同樣使用StreamWriter類,在使用File類打開文件時(shí)候 ‘使用file類的AppendText方法就可以實(shí)現(xiàn)對(duì)文本文件的追加 sw = System.IO.File.AppendText(Server.MapPath(".") & "\TestTXT.txt") sw.Write(TextBox2.Text) sw.Close() Response.Write("<script> alert(‘TestTXT.txt文件已經(jīng)成功追加新內(nèi)容!‘);</script>") Catch ex As Exception Response.Write("程序執(zhí)行出,信息描述如下:<br>" & ex.Message) End Try textread() End Sub ‘文件刪除通用過程 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Try ‘ 文件刪除時(shí)候(, 只需使用file類的Delete方法就可以輕易實(shí)現(xiàn)) System.IO.File.Delete(Server.MapPath(".") & "\TestTXT.txt") Response.Write("<script> alert(‘TestTXT.txt文件已經(jīng)成功刪除!‘);</script>") Catch ex As Exception Response.Write("程序執(zhí)行出,信息描述如下:<br>" & ex.Message) End Try End Sub End Class ‘---cdoe end-----
保存編譯后,files_Sample2.aspx運(yùn)行結(jié)果如圖10.4所示。
 圖10.4 files_Sample2.aspx運(yùn)行結(jié)果
10.3 本章小結(jié)
本章主要介紹了對(duì)系統(tǒng)文件的操作方法和技巧。
在ASP.NET中,對(duì)文件的操作主要牽涉到System.IO命名空間中的Directory類和File類,利用Directory類可以進(jìn)行對(duì)目錄的建立、刪除、遍歷等操作;利用File類,結(jié)合StreamWriter類和StreamReader類就可以實(shí)現(xiàn)對(duì)文件的操作。File類的方法屬性有很多,可以根據(jù)實(shí)際情況靈活使用。 在下一章中,我們將GDI+繪制圖形和圖像處理技術(shù)的一些知識(shí)。
作者:李宗民 來源:IT168 (責(zé)任編輯:webjx
|