文件目錄的遍歷操作是相對復(fù)雜一點,,原理是利用Directory類的GetDirectories方法和GetFiles方法,,進(jìn)行循環(huán)讀取文件或是子目錄的操作,。我們結(jié)合實例來介紹一下,。
10.1.2 目錄的遍歷
在FilesCon項目里新建一個Web窗體,命名為DirCon_Sample2.aspx,,添加四個Label標(biāo)簽控件用于顯示信息,,添加三個ListBox控件分別用于顯示驅(qū)動器、文件目錄,、文件信息,。
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è)計器生成的代碼 " ‘此處省略窗體設(shè)計器生成的代碼#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 ‘在此處放置初始化頁的用戶代碼 ‘第一次加載窗體時,初始化各控件默認(rèn)信息 ‘我們設(shè)計為初始化時候,,讀取第一個驅(qū)動器的目錄和文件信息 ‘由于目錄層次有不確定性,,為了便于實例說明,我們只讀取磁盤一下兩層目錄信息 If Not IsPostBack Then getdisk() getdir(disklist.Items(0).Text) getfiles(disklist.Items(0).Text) End If End Sub ‘獲取系統(tǒng)驅(qū)動器信息的通用過程,,并把信息加載到disklist控件中 Sub getdisk() disklist.Items.Clear() ‘利用Directory類的GetLogicalDrives方法獲取系統(tǒng)驅(qū)動器信息 ‘并循環(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 = "程序出錯,!<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 = "程序出錯,!<br>" & ex.Message End Try ‘顯示當(dāng)前查看目錄 Label1.Text = "當(dāng)前查看目錄- " & dirpath End Sub ‘改變查看驅(qū)動器 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)行文件讀寫的時候,我們一般只是對文本文件進(jìn)行操作,,在這個實例中我們一讀寫一個txt文件為例,。
在項目中新建一個Web窗體,明天為files_Sample1.aspx,,在該web窗體里添加兩個Button控件用于觸發(fā)執(zhí)行事件,,兩個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è)計器生成的代碼 " ‘此處省略窗體設(shè)計器生成的代碼 #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)行寫操作時,,如果文件已經(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)容,。下面我們來通過實例驗證,。
在FileCon項目里添加一個新的web窗體,命名為files_Sample2.aspx,,添加一個TextBox控件,,用來填寫追加內(nèi)容,兩個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è)計器生成的代碼 " ‘此處省略窗體設(shè)計器生成的代碼 #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類打開文件時候 ‘使用file類的AppendText方法就可以實現(xiàn)對文本文件的追加 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 ‘ 文件刪除時候(, 只需使用file類的Delete方法就可以輕易實現(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運行結(jié)果如圖10.4所示,。
圖10.4 files_Sample2.aspx運行結(jié)果
10.3 本章小結(jié)
本章主要介紹了對系統(tǒng)文件的操作方法和技巧。
在ASP.NET中,,對文件的操作主要牽涉到System.IO命名空間中的Directory類和File類,,利用Directory類可以進(jìn)行對目錄的建立、刪除,、遍歷等操作,;利用File類,結(jié)合StreamWriter類和StreamReader類就可以實現(xiàn)對文件的操作,。File類的方法屬性有很多,,可以根據(jù)實際情況靈活使用。 在下一章中,,我們將GDI+繪制圖形和圖像處理技術(shù)的一些知識,。
作者:李宗民 來源:IT168 (責(zé)任編輯:webjx
|