版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第11章數(shù)據(jù)文件1.掌握VB中文件的概念、種類及其結(jié)構(gòu);2.掌握順序文件的操作:打開、讀/寫、關(guān)閉;3.掌握隨機文件的操作:打開、讀/寫、關(guān)閉;4.了解二進制文件的操作。5.了解與文件操作有關(guān)的一些語句本章內(nèi)容及要求:本章重點:順序文件的操作:打開、讀/寫、關(guān)閉;隨機文件的操作:打開、讀/寫、關(guān)閉;本章難點:隨機文件、二進制文件的操作第11章數(shù)據(jù)文件
文件是存儲在外部介質(zhì)(如磁盤)上的以文件名標(biāo)識的數(shù)據(jù)的集合。通常由一組存放在磁盤上的相關(guān)字節(jié)組成。當(dāng)應(yīng)用程序要訪問文件時,必須自己決定文件中字節(jié)的意義(比如,表示字符、數(shù)據(jù)記錄、整數(shù)、字符串等等)。存儲在磁盤上的文件稱為磁盤文件,與計算機相連的設(shè)備稱為設(shè)備文件。這些文件都不在計算機內(nèi),統(tǒng)稱為外部文件。
11.1文件概述一、文件及其結(jié)構(gòu)
文件:存儲在外部介質(zhì)上數(shù)據(jù)的集合。按名存取
磁盤文件是由數(shù)據(jù)記錄組成。記錄是計算機處理數(shù)據(jù)的基本單位,它由一組具有共同屬性相互關(guān)聯(lián)的數(shù)據(jù)項組成。數(shù)據(jù)項文件的概念二、文件分類根據(jù)訪問文件的方式將文件分成3類:順序文件隨機文件二進制文件。1.順序文件順序文件(SequentialFile)是普通的文本文件。順序文件中的記錄按順序一個接一個地排列。讀寫文件存取記錄時,都必須按記錄順序逐個進行。一行一條記錄(一項數(shù)據(jù)),記錄可長可短,以“換行”字符為分隔符號。
2.隨機文件
隨機文件(RandomAccessFile)是可以按任意次序讀寫的文件,其中每個記錄的長度必須相同。在這種文件結(jié)構(gòu)中,每個記錄都有其唯一的一個記錄號,所以在讀取數(shù)據(jù)時,只要知道記錄號,便可以直接讀取記錄。隨機文件的文件結(jié)構(gòu)3.二進制文件二進制文件(Binaryfile)是字節(jié)的集合、它直接把二進制碼存放在文件中。除了沒有數(shù)據(jù)類型或者記錄長度的含義以外,它與隨機訪問很相似。二進制訪問模式是以字節(jié)數(shù)來定位數(shù)據(jù),在程序中可以按任何方式組織和訪問數(shù)據(jù),對文件中各字節(jié)數(shù)據(jù)直接進行存取。
雖然這3種文件訪問的數(shù)據(jù)類型不同,但應(yīng)用程序訪問它們的步驟卻相似:①使用Open語句打開文件,并為文件指定一個文件號。對文件進行任何I/O操作之前,都必須經(jīng)過這步操作。②從文件中讀取部分或全部數(shù)據(jù)到變量中。③對變量中的數(shù)據(jù)進行處理。④將處理后的數(shù)據(jù)保存回文件中。⑤使用Close語句關(guān)閉文件。如果沒有關(guān)閉文件,則會導(dǎo)致文件中部分或全部信息丟失。文件的基本操作打開文件讀出或?qū)懭腙P(guān)閉文件順序文件的基本操作在程序中對文件的操作,通常按3個步驟進行:一、順序文件的打開與關(guān)閉1.打開文件Open“文件名”[For模式]As[#]文件號[Len=記錄長度] (1)模式 OUTPUT:寫操作 INPUT:讀操作 APPEND:追加到文件未尾
OPEN"C:\VB\SCORE.txt"FOR
OUTPUT
AS#1(2)文件號1~511,可以用FreeFile函數(shù)獲得下一個可利用的文件號。(3)記錄長度小于或等于32767的整數(shù),它指定數(shù)據(jù)緩沖區(qū)的大小。例如,打開C:\VB\SCORE,供寫入數(shù)據(jù),指定文件號為#1。例如:OPEN“C:\TEMP\A.TXT”FORInputAS#1OPEN“C:\TEMP\B.TXT”FOROutputAS#2OPEN“C:\TEMP\C.TXT”FORAppendAS#1打開文件的真正含意:(1)并不是把文件內(nèi)容顯示出來,而是讀文件或顯示文件內(nèi)容的必經(jīng)步驟;(2)打開文件并不一定只是為了讀文件內(nèi)容而打開,其實寫文件或新建文件之前都要把對應(yīng)的文件打開。如何打開由用戶任意指定的文件:(1)用打開/另存為對話框;(2)用文件列表框/目錄列表框/驅(qū)動器列表框★要注意OPEN語句與它們分工上的不同 1.順序文件讀操作從現(xiàn)存文件中讀入數(shù)據(jù),應(yīng)以順序Input方式打開該文件。然后使用Input#語句、LineInput#語句和Input()函數(shù)讀入到程序變量中。使用格式如下:格式一:Input#語句
INPUT#文件號,變量列表
把讀出的每個數(shù)據(jù)項分別存放到所對應(yīng)的變量,從文件中讀出數(shù)據(jù)時,凡是遇到文件中的逗號、空格或回車符便認為是一個數(shù)據(jù)項的結(jié)束。二、順序文件的讀寫操作Eof函數(shù)
Eof函數(shù)將返回一個表示文件指針是否到達文件末尾的標(biāo)志。如果到了文件末尾,Eof函數(shù)返回TRUE(-1),否則返回FALSE(0)。從文件中讀數(shù)據(jù)的常見循環(huán)方式:
DoWhileNotEof(文件號)讀文件及其它語句Loop例2:把文件文件datain.txt的內(nèi)容全部讀出并顯示在窗體中:FName=App.Path&"\"&"datain.txt"OpenFNameForInputAs#1DoWhileNotEof(1)Input#1,aPrintaLoopClose#1格式二:LineInput#語句
LINEINPUT#文件號,字符串變量功能:從順序文件中讀取一整行字符到后面指定的字符串變量中。例:把程序文件夾下面的文本文件myfile.txt的內(nèi)容顯示在一個多行文本框中:FName=App.Path&"\"&"myfile.txt"OpenFNameForInputAs#1DoWhileNotEOF(1)LineInput#1,sText1.Text=Text1.Text+s+vbCrLfLoopClose#1格式三:Input函數(shù):INPUT$(N,#文件號) 從指定文件中讀取N個字符的字符串,作為函數(shù)的返回值例:把程序文件夾下面的文本文件myfile.txt的內(nèi)容一次性讀出并顯示在多行文本框中:FName=
App.Path&"\"&"myfile.txt"OpenFNameForInputAs#1Text1.Text=Input(LOF(1),1)Close#1例:把程序文件夾下面的文本文件myfile.txt的內(nèi)容逐個字符讀出并顯示在多行文本框中。DimcAsString*1FName=App.Path&"\"&"myfile.txt"OpenFNameForInputAs#1DoWhileNotEOF(1)c=Input(1,#1)Text1.Text=Text1.Text&cLoopClose#12、順序文件的寫操作向文件寫入內(nèi)容使用Print#語句或Write#語句,在程序中是數(shù)據(jù)輸出。(1)Print語句語法格式:PRINT#<文件號>,[<輸出列表>]說明:文件號為以寫方式打開文件的文件號;輸出列表為用分號或逗號分隔的變量、常量、空格和定位函數(shù)序列。(2)Write命令語法格式:Write#<文件號>,[<輸出列表>]Write語句采用緊湊格式。數(shù)據(jù)項之間插入“,”,并給字符數(shù)據(jù)加上雙引號。三、關(guān)閉文件——Close語句使用格式如下:
Close[文件號列表]其中:文件號列表為可選項,如:#1,#2,#3,如果省略,則將關(guān)閉Open語句打開的所有活動文件。例如:Close#1,#2'刪除打開的1號、2號文件Close'刪除打開的全部文件
四.與讀文件操作有關(guān)的幾個函數(shù)(1)Lof函數(shù)
LOF函數(shù)將返回某文件的字節(jié)數(shù)。例如,LOF(1)返回#1文件的長度,如果返回0值,則表示該文件是一個空文件。(2)Loc函數(shù)
Loc函數(shù)將返回在一個打開文件中讀寫的記錄號;對于二進制文件,它將返回最近讀寫的一個字節(jié)的位置。(3)Eof函數(shù)
14.3隨機文件
在文件中以順序文件方式進行存取數(shù)據(jù)很方便也很常用,但是當(dāng)需要大量查找或修改文件中的數(shù)據(jù)時會很困難,而這時采用隨機文件方式存取數(shù)據(jù)就顯得比較方便。隨機文件的每一個數(shù)據(jù)項都有相同的長度,它的數(shù)據(jù)項通常稱做記錄。隨機文件是以記錄為單位的,每條記錄都被賦予了記錄號以便查找。應(yīng)用程序可以根據(jù)記錄號直接讀取隨機文件中的任意記錄,而無須由前至后逐個讀取記錄。對隨機文件的存取是以記錄為單位進行的,每個記錄包括一個或多個字段。具有一個字段的記錄對應(yīng)于任一標(biāo)準(zhǔn)類型,比如整數(shù)或定長字符串。具有多個字段的記錄對應(yīng)于用戶自定義類型。
1、聲明記錄類型變量
在打開一個文件進行隨機訪問之前,應(yīng)定義一個類型,該類型對應(yīng)于該文件包含或?qū)挠涗洝UZ法格式為:
Type自定義類型名元素名Astype[元素名Astype]…EndType
例如,聲明一個學(xué)生自定義類型。TypeStudentNumberAsString
2
學(xué)號,寬度為2字節(jié)NameAsString
8
姓名,寬度為8字節(jié)ScoreAsInteger
成績,寬度為2字節(jié)EndType11.3隨機文件在定義與記錄對應(yīng)的類型以后,應(yīng)接著聲明程序需要的任何其他變量,用來處理作為隨機訪問而打開的文件。如:Dims1Asstudent,s2Asstudent
定義記錄變量s1和s2
2隨機文件的操作一、打開 格式:
Open“文件名”ForRandomAs#文件號[Len=記錄長度]
二、讀操作 1.格式:
Get[#]文件號,[記錄號],變量名
2.功能:
將一個已打開的磁盤文件的一條記錄的內(nèi)容讀入一個變量之中。忽略記錄號,則讀出當(dāng)前記錄后的那一條記錄。
三、寫操作
1.格式:
Put[#]文件號,[記錄號],變量名
2.功能:將一個變量的數(shù)據(jù)寫入磁盤文件中,將一個記錄變量的內(nèi)容寫到指定的記錄位置處。忽略記錄號,則表示在當(dāng)前記錄后的位置插入一條記錄。二進制文件是一個字節(jié)流,文件系統(tǒng)并不解釋各字節(jié)的意義,解釋工作由具體的應(yīng)用程序完成。以二進制方式訪問文件有下述特點:
可以直接訪問文件中的所有數(shù)據(jù)。
由應(yīng)用程序根據(jù)需要解釋數(shù)據(jù)的意義。
訪問文件的語句不更改原始數(shù)據(jù)的所有內(nèi)容。二進制文件每一次讀寫是以字節(jié)為單位對數(shù)據(jù)進行訪問操作的,它允許用戶讀寫或修改文件中的任何字節(jié)信息。當(dāng)把二進制數(shù)據(jù)寫入文件中時,使用Byte數(shù)據(jù)類型的數(shù)組,而不是String變量。String被認為包含的是字符,而二進制型數(shù)據(jù)可能無法正確地存儲在String變量中。當(dāng)要保持文件的尺寸盡量小時,應(yīng)使用二進制文件。11.4二進制文件 一、二進制文件的打開
Open"文件名"ForBinaryAs#文件號 二、二進制文件的寫操作
Put[#]文件號,[位置],變量名 寫入長度等于變量長度的數(shù)據(jù)。 三、二進制文件的讀操作
GET[#]文件號,[位置],變量名 從指定位置開始讀出長度等于變量長度的數(shù)據(jù)存入變量中,數(shù)據(jù)讀出后移動變量長度位置,如果忽略位置,則表示從文件指針?biāo)傅奈恢瞄_始讀出數(shù)據(jù),數(shù)據(jù)讀出后移動變量長度位置。11.4二進制文件例題文件復(fù)制
DimcAsByteOpen"F1.DAT"ForBinaryAs#1'打開源文件Open"F2.Dat"ForBinaryAs#2'打開目標(biāo)文件DoWhileNotEOF(1)Get#1,,c'從源文件讀出一個字節(jié)Put#2,,c'將一個字節(jié)寫入目標(biāo)文件LoopClose
與文件系統(tǒng)相關(guān)的語句1.ChDir語句格式:ChDirpath功能:改變當(dāng)前目錄。例如:ChDir"D:\TMP
2.ChDrive語句格式:ChDrivedrive功能:改變當(dāng)前驅(qū)動器說明:如果drive為“”,則當(dāng)前驅(qū)動器將不會改變;如果drive中有多個字符,則ChDrive只會使用首字母。11.5文件操作語句3.MkDir語句格式:MkDirpath功能:創(chuàng)建一個新的目錄。4.RmDir語句 格式:RmDirpath 功能:刪除一個存在的目錄說明:只能刪除空目錄。5.FileCopy語句
格式:FileCopysource,destination 功能:復(fù)制一個文件。 說明:FileCopy語句不能復(fù)制一個已打開的文件。6.Name語句 格式:NameoldpathnameAsnewpathname 功能:重新命名一個文件或目錄。 說明: (1)Name具有移動文件的功能。 (2)不能使用統(tǒng)配符“*”和“?”,不能對一個已打開的文件上使用Name語句。7.Kill語句 格式:Killpathname功能:刪除文件。 說明:pathname中可以使用統(tǒng)配符“*”和“?”。例如:Kill"*.TXT"文件系統(tǒng)控件VB提供了3種可直接瀏覽系統(tǒng)目錄結(jié)構(gòu)和文件的控件:
驅(qū)動器列表框、目錄列表框、文件列表框。
驅(qū)動器列表框文件列表框目錄列表框驅(qū)動器列表框(DriveListBox)驅(qū)動器列表框(DriveListBox)控件,通常只顯示當(dāng)前驅(qū)動器名稱,單擊向下箭頭,就會下拉出計算機擁有的所有磁盤驅(qū)動器,供用戶選擇。1.重要屬性
Drive屬性是驅(qū)動器列表框控件最重要和常用的屬性,該屬性在設(shè)計時不可用。使用格式:
object.Drive[=<字符串表達式>]例如:Drive1.drive=“D:”文件系統(tǒng)控件2.重要事件——Change事件
在程序運行時,當(dāng)選擇一個新的驅(qū)動器或通過代碼改變Drive屬性的設(shè)置時都會觸發(fā)驅(qū)動器列表框的change事件發(fā)生。目錄列表框(DirListBox)
目錄列表框(DirListBox)控件用來當(dāng)前驅(qū)動器目錄結(jié)構(gòu)及當(dāng)前目錄下的所有子文件夾(子目錄)。供用戶選擇其中一個目錄為當(dāng)前目錄。文件系統(tǒng)控件1.常用屬性Path屬性是目錄列表框控件的最常用的屬性,用于返回或設(shè)置當(dāng)前路徑。該屬性在設(shè)計時是不可用的。使用格式:Object.Path[=<字符串表達式>]其中:Object:對象表達式,其值是目錄列表框的對象名。<字符串表達式>:用來表示路徑名的字符串表達式。例如,Dir1.Path="C:\Mydir"。缺省值是當(dāng)前路徑。說明:
Path屬性也可以直接設(shè)置限定的網(wǎng)絡(luò)路徑如,\\網(wǎng)絡(luò)計算機名\共享目錄名\path文件系統(tǒng)控件2.重要事件——Change事件
與驅(qū)動器列表框一樣,在程序運行時,每當(dāng)改變當(dāng)前目錄,即目錄列表框的Path屬性發(fā)生變化時,都要觸發(fā)其Change事件發(fā)生。文件系統(tǒng)控件
文件列表框(FileListBox)控件用來顯示Path屬性指定的目錄中的文件定位并列舉出來。該控件用來顯示所選擇文件類型的文件列表。文件列表框(FilelistBox)1.常用屬性(1)Path屬性
用于返回和設(shè)置文件列表框當(dāng)前目錄,設(shè)計時不可用。說明:當(dāng)Path值的改變時,會引發(fā)一個PathChange事件。
文件系統(tǒng)控件此條件也可改為:Len(file1.path)>3(2)Filename屬性
用于返回或設(shè)置被選定文件的文件名,設(shè)計時不可用。
說明:Filename屬性不包括路徑名。
例如:要從文件列表框(File1)中獲得全路徑的文件名Fname$,用下面的程序代碼:IfRight(file1.path,1)="\"ThenFname$=file1.path&file1.filenameElseFname$=file1.path&"\"&file1.filenameEndIf文件系統(tǒng)控件(3)Pattern屬性
用于返回或設(shè)置文件列表框所顯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流課程設(shè)計實驗
- 種蘑菇課程設(shè)計
- 中華人民共和國民法典知識競賽題庫及答案
- 2024幼兒園安全教育工作總結(jié)結(jié)尾(31篇)
- 2024年自來水公司年終工作總結(jié)(35篇)
- 液體混合裝置plc課程設(shè)計
- 玉雕課程設(shè)計
- 食品行業(yè)客服工作總結(jié)
- 客房清潔員的工作總結(jié)
- 中醫(yī)科醫(yī)師工作總結(jié)
- 互聯(lián)網(wǎng)新聞信息服務(wù)管理規(guī)定試題
- GB/T 3487-2024乘用車輪輞規(guī)格系列
- GB/T 22517.2-2024體育場地使用要求及檢驗方法第2部分:游泳場地
- DB2305T 024-2024 關(guān)防風(fēng)栽培技術(shù)規(guī)程
- 年產(chǎn)500t o-甲基-n-硝基異脲技改項目可研報告
- 酒店英語會話(第六版)教案 unit 1 Room Reservations
- 2024至2030年中國蔬菜種植行業(yè)市場全景監(jiān)測及投資策略研究報告
- 2024旅行社免責(zé)協(xié)議書模板范本
- 2024汽車行業(yè)社媒營銷趨勢【微播易CAA中國廣告協(xié)會】-2024-數(shù)字化
- 2022-2023學(xué)年教科版五年級科學(xué)上冊期末復(fù)習(xí)資料
- DL∕T 2558-2022 循環(huán)流化床鍋爐基本名詞術(shù)語
評論
0/150
提交評論