版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
7.1文件的概念7.1.1文件文件是存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合,按名存取。通常,計(jì)算機(jī)程序?qū)?nèi)部數(shù)據(jù)保存到文件中的過(guò)程稱為寫(輸出)文件;將文件數(shù)據(jù)恢復(fù)成內(nèi)部數(shù)據(jù)的過(guò)程稱為讀(輸入)文件。7.1.2VB.NET文件分類按內(nèi)容分:程序文件和數(shù)據(jù)文件;按存儲(chǔ)信息的形式分:字符編碼文件(如ASCII碼文件)和二進(jìn)制文件;按訪問(wèn)模式分:順序文件、隨機(jī)文件和二進(jìn)制文件。1.順序文件順序文件(SequentialFile)中記錄的寫入、存放和讀出順序都是一致的。在順序文件中,構(gòu)成文件的記錄不定長(zhǎng),記錄與記錄之間應(yīng)有明確的記錄分隔符(如逗號(hào),換行符等)。每一個(gè)記錄包含一個(gè)或者多個(gè)數(shù)據(jù)項(xiàng),由分隔符分隔。例如,下列文本序列:1,"張三";2,"李四";3,"王五";…;100,"lack"2.隨機(jī)文件隨機(jī)文件中的記錄有固定的大小,記錄與記錄間無(wú)須明確的分隔符。下列記錄序列: 0001張三;0002李四;0003王五;...;0100Jack可以構(gòu)成一個(gè)隨機(jī)文件,每條記錄長(zhǎng)度為12個(gè)字節(jié)(數(shù)字編號(hào)占4個(gè)字節(jié),名字占8個(gè)字節(jié))。由于隨機(jī)文件的記錄定長(zhǎng),可直接定位記錄的開(kāi)始和結(jié)束,如第n記錄從文件開(kāi)始位置+(n-1)*12字節(jié)處開(kāi)始。3.二進(jìn)制文件任何一個(gè)文件都可以以二進(jìn)制模式訪問(wèn)。二進(jìn)制文件在訪問(wèn)方式上與隨機(jī)文件類似,可以看成是記錄長(zhǎng)度為1個(gè)字節(jié)的隨機(jī)文件。7.1.3VB.NET的文件訪問(wèn)存取文件一般包括三個(gè)步驟:打開(kāi)文件、讀取文件和關(guān)閉文件。7.2順序文件7.2.1基本操作文件的基本操作包括打開(kāi)、讀寫和關(guān)閉。要讀寫文件,必須先打開(kāi)文件,指定一個(gè)系統(tǒng)緩沖區(qū)用于緩存讀寫數(shù)據(jù)。讀寫完成后要關(guān)閉文件,使系統(tǒng)能將緩沖區(qū)內(nèi)未保存數(shù)據(jù)寫入文件,避免文件損壞。1.打開(kāi)文件VB.NET使用FileOpen函數(shù)打開(kāi)文件,常用于打開(kāi)順序文件的調(diào)用格式為:FileOpen(文件號(hào),文件名,打開(kāi)模式)表7-1文件打開(kāi)模式例如,下列語(yǔ)句以O(shè)utput模式打開(kāi)文件"c:\test_file.txt",意味著打開(kāi)的目的是為了要輸出信息。FileOpen(1,"c:\test_file.txt",OpenMode.Output)文件打開(kāi)后,可使用1號(hào)緩沖區(qū)對(duì)文件進(jìn)行讀寫。2.讀寫文件(1)寫操作順序文件的寫操作有兩種輸出數(shù)據(jù)的格式:標(biāo)準(zhǔn)格式和緊湊格式。標(biāo)準(zhǔn)格式以長(zhǎng)度為14個(gè)字符大小為單位的輸出域?qū)R輸出數(shù)據(jù)。輸出域邊界限制了數(shù)據(jù)項(xiàng)的起始位置(第n*14列,n=0,1,2,…),從而區(qū)分輸出數(shù)據(jù)項(xiàng)。緊湊格式則用分隔符(逗號(hào))來(lái)分隔數(shù)據(jù)項(xiàng)。例如,輸出語(yǔ)句:Print(1,TAB(10),TAB(9),TAB(-2),"ThirdLinen",TAB(),"SecondZone")Write(1,TAB(10),TAB(9),TAB(-2),123,TAB(),"NextColurnn",True)(2)讀操作Input函數(shù)通常用來(lái)讀取用Write所寫的某個(gè)特定類型的數(shù)據(jù),即用逗號(hào)和回車換行符分隔良好的(字符)數(shù)據(jù)。DimtAsIntegerInput(1,t)3.關(guān)閉文件使用完文件后,應(yīng)及時(shí)將其關(guān)閉,避免有用信息丟失。文件關(guān)閉函數(shù)的格式為:FileClose(文件號(hào)[,文件號(hào)列表])其中,文件號(hào)是要關(guān)閉文件所在緩沖區(qū)的編號(hào)。FileClose函數(shù)可以關(guān)閉一個(gè)打開(kāi)文件,也可以一次性關(guān)閉多個(gè)打開(kāi)文件。例如,語(yǔ)句:FileClose(1,2)7.2.2順序文件的使用例7.1設(shè)計(jì)一個(gè)能將用戶輸入信息保存到順序文件的程序。程序運(yùn)行界面如圖7-3所示。分析:要?jiǎng)?chuàng)建文件,應(yīng)使用FileOpen函數(shù)以O(shè)penMode.Output模式打開(kāi)文件;要添加數(shù)據(jù),應(yīng)使用FileOpen函數(shù)以O(shè)penMode.Append模式打開(kāi)文件。寫入數(shù)據(jù)項(xiàng)可以使用PrintLine或WriteLine函數(shù)。窗體界面設(shè)計(jì)使用3個(gè)LabelBox、3個(gè)TextBox、3個(gè)GroupBox、1個(gè)Button、4個(gè)RadioButton、1個(gè)StatusStrip(狀態(tài)工具欄),對(duì)StatusStrip添加ToolStripStatusLabel1。程序代碼如下:PublicClassForm1DimiAsIntegerPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickIfRadioButton1.Checked=TrueThenFileOpen(1,"d:\test_file.txt",OpenMode.Output)ElseFileOpen(1,"d:\test_file.txt",OpenMode.Append)EndIfButton1.Enabled=FalseButton2.Enabled=TrueToolStripStatusLabel1.Text="在1#緩存區(qū)打開(kāi)文件d:\test_file.txt"i=0EndSubPrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Clicki=i+1IfRadioButton4.Checked=TrueThenWriteLine(1,i,TextBox1.Text,TextBox2.Text,Val(TextBox3.Text))ElsePrintLine(1,i,TextBox1.Text,TextBox2.Text,Val(TextBox3.Text))EndIfButton3.Enabled=TrueToolStripStatusLabel1.Text="第"&i&"條記錄寫入文件d:\test_file.txt"EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.ClickFileClose(1)Button3.Enabled=FalseButton2.Enabled=FalseButton1.Enabled=Truei=0ToolStripStatusLabel1.Text="文件d:\test_file.txt已關(guān)閉"EndSub
PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadRadioButton1.Checked=TrueRadioButton3.Checked=TrueButton2.Enabled=FalseButton3.Enabled=FalseToolStripStatusLabel1.Text="就緒"EndSubEndClass例7.2設(shè)計(jì)一個(gè)能夠讀取例7.1中保存的文件信息的程序。程序運(yùn)行界面如圖7-4所示。程序代碼如下:PublicClassForm1DimiAsIntegerPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickFileOpen(1,"d:\test_file.txt",OpenMode.Input)Button1.Enabled=FalseButton2.Enabled=TrueToolStripStatusLabel1.Text="在1#緩存區(qū)打開(kāi)文件d:\test_file.txt"i=0EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.ClickDimiAsInteger,nameAsString,sexAsString,ageAsIntegerIfNotEOF(1)=TrueThenInput(1,i)Input(1,name)Input(1,sex)Input(1,age)TextBox1.Text=nameTextBox2.Text=sexTextBox3.Text=ageToolStripStatusLabel1.Text="從文件d:\test_file.txt中讀取第"&i&"條記錄"ElseToolStripStatusLabel1.Text="文件d:\test_file.txt已經(jīng)讀到了結(jié)尾"TextBox1.Text=""TextBox2.Text=""TextBox3.Text=""Button2.Enabled=FalseEndIfButton3.Enabled=True
EndSub
PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.ClickFileClose(1)Button3.Enabled=FalseButton2.Enabled=FalseButton1.Enabled=TrueToolStripStatusLabel1.Text="文件d:\test_file.txt已關(guān)閉"EndSub
PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadButton2.Enabled=FalseButton3.Enabled=FalseToolStripStatusLabel1.Text="就緒"EndSubEndClass7.3隨機(jī)文件與順序文件相比,隨機(jī)文件的記錄大小是固定的,容易計(jì)算出每條記錄在文件中的位置。隨機(jī)文件可以直接讀取任何一條記錄。1.記錄結(jié)構(gòu)隨機(jī)文件的記錄一般用類或Structrue結(jié)構(gòu)定義。例如,要使用與例7.1程序中類似的文件記錄,可用如下方法定義記錄結(jié)構(gòu),聲明記錄變量。StructurePersonalRecord ‘定義一個(gè)存儲(chǔ)個(gè)人信息的結(jié)構(gòu)PersonalRecord<VBFixedstring(12)>DimnameAsString<VBFixedstring(6)>DimsexAsStringDimageAsintegerEndStructureDimpersonAsPersonalRecord ‘用PseronalRecord聲明一個(gè)變量person,存儲(chǔ)個(gè)人信息2.打開(kāi)文件常用于打開(kāi)隨機(jī)文件的FileOpen函數(shù)調(diào)用格式為:FileOpen(文件號(hào),文件名,OpenMode.Random,,,記錄長(zhǎng)度)例如,下列語(yǔ)句以Random模式打開(kāi)文件“d:\test_file.dat”,記錄長(zhǎng)度為L(zhǎng)en(person)。FileOpen(1,"d:\test_file.dat",OpenMode.Random,,,Len(person))3.讀寫文件用于隨機(jī)文件讀寫的相關(guān)函數(shù)(或過(guò)程)如表7-5所示,分別用FileGet和FilePut對(duì)文件進(jìn)行讀寫。例如,要將Basic語(yǔ)言設(shè)計(jì)者Kemeny的信息寫到文件"d:\test_file.dat"中,可使用語(yǔ)句:="JohnG.Kemeny":person.sex="male":pserson.age=33FilePut(1,person,1)將person變量的內(nèi)容寫入文件的第1條記錄中。如果不指明記錄號(hào),則FilePut語(yǔ)句將數(shù)據(jù)寫入當(dāng)前記錄。例如:FilePut(1,person) '將person變量的內(nèi)容寫入文件的當(dāng)前記錄讀取文件的信息,可直接用FileGet語(yǔ)句讀取指定記錄,讀取完成后,文件指針指向下一條記錄。例如:FileGet(1,person,1) ‘將第1條記錄讀到person變量中。MsgBox("BASIC的發(fā)明人是"&) ‘將顯示讀出的部分信息4.關(guān)閉文件隨機(jī)文件也用FileClose關(guān)閉。例如,要關(guān)閉前面打開(kāi)的文件“d:\test_file.Dat”,可用語(yǔ)句:FileClose(1)。7.3.2隨機(jī)文件的使用例7.3設(shè)計(jì)使用隨機(jī)文件保存和讀取用戶輸入信息的程序。定義如下結(jié)構(gòu):StructurePersonRecord<VBFixedString(12)>DimnameAsString<VBFixedString(6)>DimsexAsStringDimageAsIntegerEndStructure然后用PersonRecord聲明變量person,用于保存記錄信息。DimpersonAsPersonRecord程序代碼如下:PublicClassForm1StructurePersonRecord'定義記錄結(jié)構(gòu)<VBFixedString(12)>DimnameAsString<VBFixedString(6)>DimsexAsStringDimageAsIntegerEndStructureDimpersonAsPersonRecord'聲明保存記錄的變量DimisFileOpenedAsBoolean'文件打開(kāi)標(biāo)志
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickIfisFileOpenedThenReturnFileOpen(1,"d:\test_file.txt",OpenMode.Random,,,Len(person))ToolStripStatusLabel1.Text="在1#緩存區(qū)打開(kāi)文件d:\test_file.txt,記錄數(shù)為:"&LOF(1)/Len(person)isFileOpened=TrueEndSubPrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.ClickDimrecordNoAsLongIfNotisFileOpenedThenReturnrecordNo=Val(TextBox4.Text)IfrecordNo>0AndrecordNo<=LOF(1)/Len(person)Or(recordNo=-1AndNotEOF(1))ThenFileGet(1,person,recordNo)TextBox4.Text=recordNoTextBox1.Text=TextBox2.Text=person.sexTextBox3.Text=person.ageToolStripStatusLabel1.Text="讀取記錄"&recordNoEndIfEndSubPrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.ClickDimrecordNoAsLongIfNotisFileOpenedThenReturnrecordNo=Val(TextBox4.Text)=TextBox1.Textperson.sex=TextBox2.Textperson.age=Val(TextBox3.Text)IfrecordNo<>-1ThenFilePut(1,person)ToolStripStatusLabel1.Text="增加一條記錄"EndIfIfrecordNo>0AndrecordNo<=LOF(1)/Len(person)ThenFilePut(1,person,recordNo)ToolStripStatusLabel1.Text="寫入記錄"&recordNoEndIfEndSubPrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadTextBox4.Text=-1isFileOpened=FalseToolStripStatusLabel1.Text="就緒"EndSub
PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.ClickIfNotisFileOpenedThenReturnFileClose(1)'關(guān)閉文件isFileOpened=FalseTextBox1.Text=""TextBox2.Text=""TextBox3.Text=""ToolStripStatusLabel1.Text="就緒"EndSubEndClass7.4VB.NET文件管理VB.NET使用基礎(chǔ)類庫(kù)中的Directory類和File類管理目錄和文件。這兩個(gè)類位于System.IO命名空間,提供了大量用于管理目錄和文件的方法。7.4.1目錄管理'創(chuàng)建目錄d:\test_dirSystem.IO.Directory.CreateDirectory("d:\test_dir")'創(chuàng)建子目錄d:\test_dir\test_sub_dirSystem.IO.Directory.CreateDirectory("c:\test_dir\test_sub_dir")例如,下列語(yǔ)句演示了Delete、Exists和Move方法的使用方式。'目錄C:\Test_Dir\Test_Sub_Dir是否存在?IfSystem.IO.Directory.Exists("C:\Test_Dir\Test_Sub_Dir")Then'刪除子目錄C:\Test_Dir\Test_Sub_DirSystem.IO.Directory.Delete("C:\Test_Dir\Test_Sub_Dir")’創(chuàng)建目錄"C:\Test_Dir\Test_Sub_Dir"System.IO.Directory.CreateDirectory("C:\Test_Dir\Test_Sub_Dir")‘移動(dòng)子目錄"C:\Test_Sub_Dir"到"C:\Test_Dir\Test_Sub_Dir"System.IO.Directory.Move("C:\Test_Sub_Dir","C:\Test_Dir\Test_Sub_Dir")EndIf7.4.2文件管理下面給出Copy、Move、Exists和Delete方法的使用實(shí)例。IfSystem.IO.File.Exists("C:\.test_file.txt")Then '文件是否存在?'移動(dòng)文件System.IO.File.Move("C:\test_file.txt","C:\test_Dir\test_Sub_Dir\test_file.txt")'復(fù)制文件System.IO.File.Copy("C:\test_Dir\test_Sub_Dir\test_file.txt","C:\test_file.txt")System.IO.File.Delete("C:\test_Dir\Test_Sub_Dir\test_file.txt") '刪除文件EndIf7.5綜合實(shí)例7.5.1問(wèn)題及分析本節(jié)將設(shè)計(jì)一個(gè)類似Windows記事本的程序,稱為“簡(jiǎn)易記事本”。程序的基本功能是顯示、編輯和保存文本文件。簡(jiǎn)易記事本只有“文件”和“編輯”兩個(gè)菜單。“文件”菜單包括新建、打開(kāi)、保存和退出四個(gè)功能;“編輯”菜單則有剪切、復(fù)制和粘貼3個(gè)功能。7.5.2解決方案1.界面設(shè)計(jì)簡(jiǎn)易記事本所需要的控件包括窗體、文本框、打開(kāi)文件
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工地項(xiàng)目 采購(gòu)合同范例
- 求贈(zèng)與合同范例
- 九 我家買新房了:《面積和面積單位》(教案) -三年級(jí)上冊(cè)數(shù)學(xué) 青島版(五四學(xué)制)
- 2019年四年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)教案 北師大版(秋版)
- 農(nóng)村廚子采購(gòu)合同范例
- 機(jī)械租賃外派合同范例
- 非洲農(nóng)村原始采購(gòu)合同范例
- 二年級(jí)上冊(cè)數(shù)學(xué)教案-數(shù)學(xué)好玩 尋找身體上的數(shù)學(xué)“秘密”-北師大版
- 六年級(jí)數(shù)學(xué)上冊(cè)教案 解決問(wèn)題的策略(2)蘇教版
- 四年級(jí)上冊(cè)數(shù)學(xué)教案-第2章:第3課時(shí) 解決問(wèn)題 西師大版
- 過(guò)敏性紫癜-教學(xué)課件
- GB/T 18344-2016汽車維護(hù)、檢測(cè)、診斷技術(shù)規(guī)范
- 神態(tài)描寫課件
- 醫(yī)惠內(nèi)鏡消毒質(zhì)量追溯系統(tǒng)
- 如何提高基層干部群眾工作能力課件
- 風(fēng)險(xiǎn)分級(jí)管控與隱患排查治理雙重預(yù)防體系建設(shè)資料匯編
- 2022年讀者出版集團(tuán)有限公司招聘筆試試題及答案解析
- NB∕T 33009-2021 電動(dòng)汽車充換電設(shè)施建設(shè)技術(shù)導(dǎo)則
- 大學(xué)《傳播學(xué)概論》試卷及答案
- 工程設(shè)計(jì)費(fèi)收費(fèi)標(biāo)準(zhǔn)
- -堅(jiān)定目標(biāo)贏在執(zhí)行 主題班會(huì)課件
評(píng)論
0/150
提交評(píng)論