10.1.2 目錄的遍歷
在FilesCon項(xiàng)目里新建一個(gè)Web窗體,命名為DirCon_Sample2.aspx,添加四個(gè)Label標(biāo)簽控件用于顯示信息,添加三個(gè)ListBox控件分別用于顯示驅(qū)動(dòng)器、文件目錄、文件信息。
DirCon_Sample2.aspx頁(yè)面的主要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">磁盤(pán)列表</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類(lèi) 和字符串變量
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
‘在此處放置初始化頁(yè)的用戶(hù)代碼
‘第一次加載窗體時(shí),初始化各控件默認(rèn)信息
‘我們?cè)O(shè)計(jì)為初始化時(shí)候,讀取第一個(gè)驅(qū)動(dòng)器的目錄和文件信息
‘由于目錄層次有不確定性,為了便于實(shí)例說(shuō)明,我們只讀取磁盤(pán)一下兩層目錄信息
If Not IsPostBack Then
getdisk()
getdir(disklist.Items(0).Text)
getfiles(disklist.Items(0).Text)
End If
End Sub
‘獲取系統(tǒng)驅(qū)動(dòng)器信息的通用過(guò)程,并把信息加載到disklist控件中
Sub getdisk()
disklist.Items.Clear()
‘利用Directory類(lèi)的GetLogicalDrives方法獲取系統(tǒng)驅(qū)動(dòng)器信息
‘并循環(huán)讀出,加載到disklist控件中
For Each str In mydir.GetLogicalDrives()
disklist.Items.Add(str)
Next
End Sub
‘獲取文件目錄的通用過(guò)程,并把獲取的信息加載到dirlist控件中
Sub getdir(ByVal dirpath As String)
dirlist.Items.Clear()
‘利用Directory類(lèi)的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
‘獲取文件目錄中文件信息的通用過(guò)程,并把獲取的信息加載到filelist控件中
Sub getfiles(ByVal dirpath As String)
filelist.Items.Clear()
‘利用Directory類(lèi)的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 文件的讀寫(xiě)
在進(jìn)行文件讀寫(xiě)的時(shí)候,我們一般只是對(duì)文本文件進(jìn)行操作,在這個(gè)實(shí)例中我們一讀寫(xiě)一個(gè)txt文件為例。
在項(xiàng)目中新建一個(gè)Web窗體,明天為files_Sample1.aspx,在該web窗體里添加兩個(gè)Button控件用于觸發(fā)執(zhí)行事件,兩個(gè)TextBox控件用來(lái)顯示文本。files_Sample1.aspx頁(yè)面的主要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="寫(xiě)入文件內(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
‘在此處放置初始化頁(yè)的用戶(hù)代碼
End Sub
‘文件的寫(xiě)操作事件過(guò)程
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
‘聲明StreamWriter,用來(lái)進(jìn)行文件的寫(xiě)操作
‘該類(lèi)進(jìn)行寫(xiě)操作時(shí),如果文件已經(jīng)存在,則直接進(jìn)行覆蓋
‘如果沒(méi)有文件,則新建文件
Dim sw As System.IO.StreamWriter
Try
‘利用File類(lèi)的CreateText新建文件,并指定路徑
sw = System.IO.File.CreateText(Server.MapPath(".") + "\TestTXT.txt")
‘把textbox1中的文本內(nèi)容以文本流寫(xiě)入
sw.WriteLine(TextBox1.Text.ToString)
‘關(guān)閉文本流
sw.Close()
‘提示成功~!
Response.Write("<script> alert(‘TestTXT.txt文件已經(jīng)寫(xiě)入內(nèi)容!‘);</script>")
Catch ex As Exception
Response.Write("程序執(zhí)行出,信息描述如下:<br>" & ex.Message)
End Try
End Sub
‘文件讀出操作事件過(guò)程
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
‘聲明StreamReader,用來(lái)進(jìn)行文件的讀出操作
Dim sr As System.IO.StreamReader
‘檢測(cè)是否存在
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)容。下面我們來(lái)通過(guò)實(shí)例驗(yàn)證。
在FileCon項(xiàng)目里添加一個(gè)新的web窗體,命名為files_Sample2.aspx,添加一個(gè)TextBox控件,用來(lái)填寫(xiě)追加內(nèi)容,兩個(gè)Button控件,用來(lái)執(zhí)行命令。files_Sample2.aspx頁(yè)面的主要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">填寫(xiě)追加內(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頁(yè)面的主要邏輯代碼如下:
‘------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
‘在此處放置初始化頁(yè)的用戶(hù)代碼
If Not IsPostBack Then
textread()
End If
End Sub
‘讀取文件內(nèi)容的通用過(guò)程
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
‘文件追加事件過(guò)程
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類(lèi),在使用File類(lèi)打開(kāi)文件時(shí)候
‘使用file類(lèi)的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
‘文件刪除通用過(guò)程
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
‘ 文件刪除時(shí)候(, 只需使用file類(lèi)的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.3 本章小結(jié)
本章主要介紹了對(duì)系統(tǒng)文件的操作方法和技巧。
在ASP.NET中,對(duì)文件的操作主要牽涉到System.IO命名空間中的Directory類(lèi)和File類(lèi),利用Directory類(lèi)可以進(jìn)行對(duì)目錄的建立、刪除、遍歷等操作;利用File類(lèi),結(jié)合StreamWriter類(lèi)和StreamReader類(lèi)就可以實(shí)現(xiàn)對(duì)文件的操作。File類(lèi)的方法屬性有很多,可以根據(jù)實(shí)際情況靈活使用。
在下一章中,我們將GDI+繪制圖形和圖像處理技術(shù)的一些知識(shí)。
聯(lián)系客服