版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第八章第八章 文件系統(tǒng)文件系統(tǒng)&8-1 文件的基本概念文件的基本概念文件是存放在外部介質文件是存放在外部介質(如硬盤、軟盤、如硬盤、軟盤、光盤等等光盤等等)上數(shù)據(jù)的集合,對存儲在外部上數(shù)據(jù)的集合,對存儲在外部介質上的數(shù)據(jù)的存取都是以文件為對象進介質上的數(shù)據(jù)的存取都是以文件為對象進行的。行的。一、文件的分類一、文件的分類VB中把文件分為三類:中把文件分為三類:1、順序文件、順序文件 - 其中的內(nèi)容全部是文本。其中的內(nèi)容全部是文本。 2、隨機文件、隨機文件 - 由相同長度的記錄集合組由相同長度的記錄集合組成,記錄中可以有一個或多成,記錄中可以有一個或多個字段。個字段。3、二進制文件、二進制
2、文件 - 能訪問任意結構的文件。能訪問任意結構的文件。二、文件的命名二、文件的命名為了標識和區(qū)分每個文件,就必須對文件進為了標識和區(qū)分每個文件,就必須對文件進行命名。命名規(guī)則:行命名。命名規(guī)則:DOS操作系統(tǒng)中:八個字符的文件名操作系統(tǒng)中:八個字符的文件名加上三個字符的擴展名。加上三個字符的擴展名。例:例:Autoexec.bat文件名,文件名,最長只最長只能用能用8個個字符字符點符點符號號擴展名,擴展名,最長只最長只能用能用3個個字符字符Windows 98/2000/XP操作系統(tǒng)中:操作系統(tǒng)中:支持長文件名,可以使用最長支持長文件名,可以使用最長255個字符個字符來命名文件名。來命名文件名
3、。&8-2 直接操作直接操作DOS文件或文件或win98/2000/xp文件文件在在VB中利用語句能直接對中利用語句能直接對DOS文件進行文件進行操作操作1、ChDrive語句語句 - 改變當前的驅動器。改變當前的驅動器。語法格式:語法格式:ChDrive drive例:例:ChDrive “d:”2、ChDir 語句語句 - 改變當前路徑改變當前路徑 (改變目錄或文件夾改變目錄或文件夾)語法格式:語法格式:ChDir path例:例:ChDir “龐一平龐一平”4、RmDir - 刪除一個存在的空目錄。刪除一個存在的空目錄。老的路徑和文件名老的路徑和文件名新的路徑和文件名新的路徑和文
4、件名3、MkDir 語句語句 - 創(chuàng)建一個新的文件夾創(chuàng)建一個新的文件夾語法格式:語法格式:MkDir path例:例:MkDir “龐一平龐一平”5、Name -重新命名一個文件、目錄、或文件重新命名一個文件、目錄、或文件夾。夾。( (對文件夾或文件名對文件夾或文件名) )語法格式:語法格式:Name oldpathname As newpathname語法格式:語法格式:RmDir path例:例:RmDir “龐一平龐一平”6、Kill - 從磁盤中刪除文件。從磁盤中刪除文件。語法格式:語法格式:Kill pathname7、FileCopy - 復制一個文件。復制一個文件。語法格式:語法
5、格式:FileCopy source, destination源文件源文件目的文件目的文件8-3文件操作的一般步驟文件操作的一般步驟文件儲存在硬盤、軟盤或優(yōu)盤中。要讀取文件文件儲存在硬盤、軟盤或優(yōu)盤中。要讀取文件中的數(shù)據(jù)首先必須將文件的內(nèi)容加載中的數(shù)據(jù)首先必須將文件的內(nèi)容加載(傳送傳送)到到內(nèi)存中,這個存放文件數(shù)據(jù)的內(nèi)存又叫緩沖區(qū)。內(nèi)存中,這個存放文件數(shù)據(jù)的內(nèi)存又叫緩沖區(qū)。這樣一個文件的操作被稱作文件的這樣一個文件的操作被稱作文件的“打開打開”。打開文件使用打開文件使用“Open”語句。語句。用于訪問順序文件用于訪問順序文件一、一、Open語句語句&8-4 順序文件順序文件文件打開后,
6、才能對文件中的數(shù)據(jù)進行讀文件打開后,才能對文件中的數(shù)據(jù)進行讀/寫操作。寫操作。文件使用完畢,應該將其文件使用完畢,應該將其“關閉關閉”,釋放占有的內(nèi)存。,釋放占有的內(nèi)存。因為系統(tǒng)內(nèi)存有限。關閉文件使用因為系統(tǒng)內(nèi)存有限。關閉文件使用“Close”語句。語句。順序文件即是普通的文本文件,文件中的每一個順序文件即是普通的文本文件,文件中的每一個字符代表一個文本字符或文件格式符字符代表一個文本字符或文件格式符(回車、換行回車、換行符符),所有的字符都以,所有的字符都以ASCII代碼存儲。代碼存儲。Open pathname For mode Access 存取類型存取類型 lock As #filen
7、umber Len=reclength其中:其中: Pathname - 代表需要打開的文件名代表需要打開的文件名(需要需要路徑路徑)。Open d:qqq.txt For Append As #1例:例: Mode - 在順序文件時為在順序文件時為Input、Output、AppendInput - 表示從文件中讀出字符串。表示從文件中讀出字符串。(如如果文件不存在則出錯果文件不存在則出錯)Output - 表示把字符串寫入文件中,從表示把字符串寫入文件中,從頭寫入。文件中原有的內(nèi)容被覆頭寫入。文件中原有的內(nèi)容被覆蓋。蓋。Append - 表示把字符加到文件尾部。表示把字符加到文件尾部。Re
8、ad Write - 對打開的文件可讀可寫對打開的文件可讀可寫 Access 存取類型存取類型 -Read - 對打開的文件只能進行讀操作對打開的文件只能進行讀操作Write - 對打開的文件只能進行寫操作對打開的文件只能進行寫操作Open d:qqq.txt For Append Access Write As #1例:例:注意:注意:Access存取類型存取類型 必須與必須與 Mode 相配合,相配合,不能互相矛盾。不能互相矛盾。例:例:Open d:qqq.txt For input Access Write As #1互相矛盾,系統(tǒng)將提示互相矛盾,系統(tǒng)將提示“文件模式錯誤文件模式錯誤”
9、Open d:qqq.txt For Output Access Read As #1例:例: Lock - 鎖定,它只用在網(wǎng)絡或多任務環(huán)境中,鎖定,它只用在網(wǎng)絡或多任務環(huán)境中,以防止其它計算機或其它程序對打開的以防止其它計算機或其它程序對打開的文件進行讀寫。文件進行讀寫。Shared - 共享。允許任何計算機的用戶對該共享。允許任何計算機的用戶對該文件進行讀寫操作。文件進行讀寫操作。Lock Read - 防止讀出。允許任何計算機的用戶防止讀出。允許任何計算機的用戶對該文件進行寫操作,但不能讀。對該文件進行寫操作,但不能讀。Lock Write - 防止寫入。允許任何計算機的用戶防止寫入。允
10、許任何計算機的用戶對該文件進行讀操作,但不能寫入。對該文件進行讀操作,但不能寫入。Lock Read Write - 防止讀出與寫入。禁止任何防止讀出與寫入。禁止任何計算機的用戶對該文件進行訪問。計算機的用戶對該文件進行訪問。缺省值為:缺省值為: Lock Write Filenumber - 必要。一個有效的必要。一個有效的文件號文件號,范圍在范圍在 #1 到到 #511 之間。之間。 Buffersize - 緩沖字符數(shù),值小于緩沖字符數(shù),值小于32767二、二、Print # 語句語句語法格式:語法格式:Print #filenumber, outputlist將格式化顯示的數(shù)據(jù)寫入順序
11、文件中。將格式化顯示的數(shù)據(jù)寫入順序文件中。順序文件的缺省值為順序文件的缺省值為512注意:注意:1、當前使用的文件號必須是唯一的。不能再、當前使用的文件號必須是唯一的。不能再分配給其它文件使用。分配給其它文件使用。2、當以、當以Output、Append模式打開一個不存在的模式打開一個不存在的文件時,文件時,VB會自動創(chuàng)建一個相應的文件。會自動創(chuàng)建一個相應的文件。#filenumber - 打開文件的文件號打開文件的文件號Outputlist - 輸出列表。與輸出列表。與Print 方法完全一樣方法完全一樣Spc(n) | Tab(n) expression charpos語法如下:語法如下:
12、與與 Print # 語句或語句或 Print 方法一起使方法一起使用,對輸出進行定位。它用,對輸出進行定位。它用來在輸出項用來在輸出項前插入前插入n個空格個空格Spc函數(shù)函數(shù):用來將輸出項定位在絕對列號上,這里,用來將輸出項定位在絕對列號上,這里,n 為列號。使用無參數(shù)的為列號。使用無參數(shù)的 Tab(n) 將插將插入點定位在下一個打印區(qū)的起始位置。入點定位在下一個打印區(qū)的起始位置。Tab函數(shù)函數(shù):(a). 標準格式輸出標準格式輸出用逗號用逗號“,”作為輸出項之間的分隔符時,作為輸出項之間的分隔符時,輸出的數(shù)據(jù)按標準格式寫到文件中。輸出的數(shù)據(jù)按標準格式寫到文件中。例:例:Spc 函數(shù)、函數(shù)、T
13、ab函數(shù)函數(shù)可以和可以和 PrintPrint、Print # 語句語句一起使用。一起使用。Open TESTFILE For Output As #1 打開輸出文件。打開輸出文件。Print #1, 10 spaces between here; Spc(10); and here.Close #1 關閉文件。關閉文件。Print spc(5); “Made in China”Print tab(10); “2002.05.31”三、三、Write # 語句語句語法格式:語法格式:將數(shù)據(jù)寫入順序文件。將數(shù)據(jù)寫入順序文件。(b). 緊湊格式輸出緊湊格式輸出用分號用分號“;”作為輸出項之間的分隔
14、符時,作為輸出項之間的分隔符時,輸出的數(shù)據(jù)按輸出的數(shù)據(jù)按緊湊緊湊格式寫到文件中。格式寫到文件中。注意:注意:數(shù)值數(shù)據(jù)前面有個符號位,后面有個數(shù)值數(shù)據(jù)前面有個符號位,后面有個空格空格Write #filenumber, outputlist文件號文件號文件列表文件列表Write # 與與 Print # 的區(qū)別:的區(qū)別:1、Write # 語句寫到文件中的數(shù)據(jù)以緊湊格式語句寫到文件中的數(shù)據(jù)以緊湊格式存放。存放。2、Write # 能自動地為字符串加上雙引號,數(shù)能自動地為字符串加上雙引號,數(shù)值沒有雙引號,并將每個輸出項用逗號分開。值沒有雙引號,并將每個輸出項用逗號分開。例:例:Private Su
15、b Command1_Click() Dim x, y As Single x = 12.3: y = -3.14 Open c:data.txt For Output As 1 Write #1, x, y, 123 Close #1End Sub結果:結果:12.3,-3.14,“123”注意:此處逗號與分號,結果一樣解:解:例:例: 將如下內(nèi)容寫入文本文件中將如下內(nèi)容寫入文本文件中, 文件名文件名為為pyp.txt, 文件存放在文件存放在“d:龐一平龐一平” 文件夾文件夾下下今天我在學校開會今天我在學校開會龐一平龐一平 下午下午2000.5.28Private Sub Command1_
16、Click() Open d:龐一平龐一平pyp.txt For Output As #1 Print #1, 今天我在學校開會今天我在學校開會 Print #1, Tab(10); 龐一平龐一平; Tab(18); 下午下午 Print #1, Tab(10); ”2000.5.28 Close #1 MsgBox (文件已經(jīng)建立文件已經(jīng)建立)End Sub思考:將上例中思考:將上例中Print # 改成改成 Write # ,觀察結果,觀察結果四、四、Input # 語句語句語法格式:語法格式:Input #filenumber, varlist從已打開的順序文件中讀出數(shù)據(jù)并將數(shù)據(jù)賦從已打
17、開的順序文件中讀出數(shù)據(jù)并將數(shù)據(jù)賦值給相應的變量。值給相應的變量。必要。用逗號分界的變量列表,將文必要。用逗號分界的變量列表,將文件中讀出的值分配給這些變量。件中讀出的值分配給這些變量。在輸入數(shù)據(jù)項目時,如果變量列表數(shù)大于在輸入數(shù)據(jù)項目時,如果變量列表數(shù)大于一行中數(shù)據(jù)的個數(shù),則會產(chǎn)生一個錯誤。一行中數(shù)據(jù)的個數(shù),則會產(chǎn)生一個錯誤。Dim MyString, MyNumberOpen TESTFILE For Input As #1 打開輸入文件。打開輸入文件。Do While Not EOF(1) 循環(huán)至文件尾。循環(huán)至文件尾。Input #1, MyString, MyNumber 將數(shù)據(jù)讀入兩個
18、變量。將數(shù)據(jù)讀入兩個變量。Print MyString, MyNumber 在窗口中顯示數(shù)據(jù)。在窗口中顯示數(shù)據(jù)。LoopClose #1 關閉文件。關閉文件。例:例:若文件中的內(nèi)容是若文件中的內(nèi)容是“Hello”,123,利用下面語句,利用下面語句可將文件內(nèi)容讀出。可將文件內(nèi)容讀出。演示將數(shù)據(jù)寫入文件與數(shù)據(jù)讀出文件演示將數(shù)據(jù)寫入文件與數(shù)據(jù)讀出文件Open d:TESTFILE.txt For Append As #2 Write #2, made in china, 12345Close #2五、五、Line Input # 語句語句語法格式:語法格式:Line Input #filenumb
19、er, varname從已打開的順序文件中讀出一行并將它分配從已打開的順序文件中讀出一行并將它分配給給 String變量。變量。 Dim TextLine Open TESTFILE For Input As #1 打開文件。打開文件。 Do While Not EOF(1) 循環(huán)至文件尾。循環(huán)至文件尾。 Line Input #1, TextLine 讀入一行數(shù)據(jù)并將其賦予某變量。讀入一行數(shù)據(jù)并將其賦予某變量。 Debug.Print TextLine 在調(diào)試窗口中顯示數(shù)據(jù)。在調(diào)試窗口中顯示數(shù)據(jù)。 Loop Close #1 關閉文件關閉文件寫入文件與讀出文件的配合:寫入文件與讀出文件的配合
20、:Write # 寫入寫入 - 用用 Input # 讀出讀出Print # 寫入寫入 - 用用 Line Input # 讀出讀出 Dim TextLine Open d:TESTFILE.txt For Output As #2 打開文件。打開文件。 Print #2, Wuxi, Jiangsu 輸入一行數(shù)據(jù)輸入一行數(shù)據(jù) Print #2, 中國中國 Close #2 關閉文件關閉文件 Open d:TESTFILE.txt For Input As #1 打開文件。打開文件。 Do While Not EOF(1) 循環(huán)至文件尾。循環(huán)至文件尾。 Line Input #1, TextL
21、ine 讀入一行數(shù)據(jù)并將其賦予某變量。讀入一行數(shù)據(jù)并將其賦予某變量。 Print TextLine 在窗口中顯示數(shù)據(jù)。在窗口中顯示數(shù)據(jù)。 Loop Close #1 關閉文件關閉文件例:例:六、六、Input 函數(shù)函數(shù)語法格式:語法格式:Input(n, #文件號文件號)此函數(shù)表示一次從文件中讀出此函數(shù)表示一次從文件中讀出n個字符。它包個字符。它包括前導空格、逗號、雙引號以及回車換行符。括前導空格、逗號、雙引號以及回車換行符。Dim MyCharOpen d:TESTFILE.txt For Input As #1 打開文件。打開文件。Do While Not EOF(1) 循環(huán)至文件尾。循環(huán)
22、至文件尾。 MyChar = Input(1, #1) 讀入一個字符。讀入一個字符。 Debug.Print MyChar 顯示到調(diào)試窗口。顯示到調(diào)試窗口。LoopClose #1 關閉文件。關閉文件。例:例:Private Sub Command1_Click() Dim N, s As String Open d:zjs3.asm For Input As #10 打開文件打開文件zjs3.asm Open d:zjs3.bak For Append As #20 打開文件打開文件zjs3.bak Do While Not EOF(10) 循環(huán)至文件尾。循環(huán)至文件尾。 N = Input(
23、1, #10) 讀出一個字符。讀出一個字符。 Print #20, N; 寫入文件寫入文件zjs3.bak中中 Loop Close #20 關閉文件關閉文件zjs3.asm 。 Close #10 關閉文件關閉文件zjs3.bak 。End Sub例:將一個文件從一個地方復制到另一個地方例:將一個文件從一個地方復制到另一個地方例:用順序文件創(chuàng)建數(shù)據(jù)庫,并把原始數(shù)據(jù)寫例:用順序文件創(chuàng)建數(shù)據(jù)庫,并把原始數(shù)據(jù)寫入庫中。入庫中。Option ExplicitOption Base 1Private Sub CmdWrite_Click() Dim n, i As Integer Dim Sname(
24、) As String Dim Age() As String Dim Add() As String n = InputBox(請輸入學生人數(shù)請輸入學生人數(shù), 詢問人數(shù)詢問人數(shù), 1) Open d:龐一平龐一平檔案檔案.txt For Append As #1 ReDim Sname(n) As String ReDim Age(n) As String ReDim Add(n) As String For i = 1 To n Sname(i) = InputBox(輸入姓名輸入姓名, 第第 + Str(i) + 人人) Age(i) = InputBox(輸入年齡輸入年齡, 第第 +
25、Str(i) + 人人) Add(i) = InputBox(輸入家庭地址輸入家庭地址, 第第 + Str(i) + 人人) Write #1, Sname(i), Age(i), Add(i) Next i Close #1End SubPrivate Sub CmdRead_Click() Dim x, y, z As String Open d:龐一平龐一平檔案檔案.txt For Input As #1 Print 姓名姓名, 年齡年齡, 地址地址 Do While Not EOF(1) Input #1, x, y, z Print x, y, z Loop Close #1End
26、Sub&8-5 隨機文件隨機文件一、隨機文件的特點一、隨機文件的特點1、隨機文件由、隨機文件由記錄記錄組成,所有的記錄長度相同,通組成,所有的記錄長度相同,通過記錄號能找到所要找的記錄。過記錄號能找到所要找的記錄。2、每個記錄劃分為若干個字段。、每個記錄劃分為若干個字段。3、打開隨機文件后,對任一記錄即可讀、又可寫。、打開隨機文件后,對任一記錄即可讀、又可寫。記記錄錄號號123.nn+1n+2字段字段1字段字段2 字段字段3字段字段n 字段字段n+1.4、記錄中的每個字段可存放不同的內(nèi)容、記錄中的每個字段可存放不同的內(nèi)容(比如:比如:姓名、學號、年齡、性別、通訊地址、郵編姓名、學號、年
27、齡、性別、通訊地址、郵編等等等等)。這些字段內(nèi)容可能具有不同的數(shù)據(jù)類。這些字段內(nèi)容可能具有不同的數(shù)據(jù)類型。以后打開隨機文件后必須用變量來存放型。以后打開隨機文件后必須用變量來存放這些不同數(shù)據(jù)類型的數(shù)據(jù)。這些不同數(shù)據(jù)類型的數(shù)據(jù)。在應用程序打開以隨機型訪問的文件以前,應在應用程序打開以隨機型訪問的文件以前,應先聲明所有用來處理該先聲明所有用來處理該隨機隨機文件數(shù)據(jù)所需的變文件數(shù)據(jù)所需的變量。這些變量應包括在一種新的數(shù)據(jù)類型中。量。這些變量應包括在一種新的數(shù)據(jù)類型中。這個數(shù)據(jù)類型應包括不同的變量,變量的數(shù)據(jù)這個數(shù)據(jù)類型應包括不同的變量,變量的數(shù)據(jù)類型可以是以前學過的任何數(shù)據(jù)類型。類型可以是以前學過的
28、任何數(shù)據(jù)類型。思考:思考: 能否用數(shù)組來處理隨機文件中字段的內(nèi)容?能否用數(shù)組來處理隨機文件中字段的內(nèi)容?用戶定義新的數(shù)據(jù)類型,其中的變量應對應記錄用戶定義新的數(shù)據(jù)類型,其中的變量應對應記錄文件中的記錄字段,這些變量以后就能保存或處文件中的記錄字段,這些變量以后就能保存或處理記錄文件中的字段內(nèi)容。理記錄文件中的字段內(nèi)容。二、定義記錄類型二、定義記錄類型語法格式:語法格式:以前我們講過許多基本數(shù)據(jù)類型,以前我們講過許多基本數(shù)據(jù)類型,(如:如:String, Integer, Single, Boolean 等等等等)?,F(xiàn)在我們可以將這?,F(xiàn)在我們可以將這些不同的類型組合起來,來創(chuàng)建自己的些不同的類型
29、組合起來,來創(chuàng)建自己的“用戶自用戶自定義數(shù)據(jù)類型定義數(shù)據(jù)類型”。Private | Public Type varnameelementname (subscripts) As typeelementname (subscripts) As typeEnd Type其中:其中:Private 用在窗體??熘杏迷诖绑w??熘蠵ublic 用在標準模塊中用在標準模塊中Varname -必須。必須。用戶自定義類型的名稱;用戶自定義類型的名稱;遵循標準的變量命名約定遵循標準的變量命名約定Elementname - 必需的。用戶自定義類型的必需的。用戶自定義類型的元素名稱。元素名稱。subscripts
30、- 可選的。數(shù)組元素的維數(shù)??蛇x的。數(shù)組元素的維數(shù)。Type StateData CityCode As Integer County As String * 30End TypeDim Washington As StateData例:例:它只能用在模塊級別中。它只能用在模塊級別中。例:創(chuàng)建自己的通訊錄例:創(chuàng)建自己的通訊錄(TXL)數(shù)據(jù)類型,包括:數(shù)據(jù)類型,包括:學號學號(Id)、姓名、姓名(Name)、地址、地址(Add)。解:在窗體模塊中,書寫如下代碼。解:在窗體模塊中,書寫如下代碼。Option ExplicitPrivate Type TXL Id As Integer Name A
31、s String Add As StringEnd TypePrivate Sub Command1_Click() Dim myinfo As TXL myinfo.Id = 10 myinfo.Name = 張三張三 myinfo.Add = 中山路中山路150號號 Print 學號學號, 姓名姓名, 姓名姓名 Print Print myinfo.Id, myinfo.Name, myinfo.AddEnd Sub語法格式:語法格式:Open pathname For Random As filenumber Len = reclength路徑文件名路徑文件名文件號文件號記錄長度記錄長度
32、三、打開隨機文件的語句三、打開隨機文件的語句注意:注意:Len=reclength (記錄長度記錄長度) 如果語句中的此如果語句中的此長度小于實際的記錄長度,則會出現(xiàn)錯誤。長度小于實際的記錄長度,則會出現(xiàn)錯誤。如果語句中的此長度大于實際的記錄長度,如果語句中的此長度大于實際的記錄長度,則不會出錯,但浪費一些磁盤存儲空間。則不會出錯,但浪費一些磁盤存儲空間。1、PUT 語句語句將一個將一個變量變量的數(shù)據(jù)寫入磁盤文件中。的數(shù)據(jù)寫入磁盤文件中。語法格式:語法格式:Put #filenumber, recnumber, varname文件號文件號記錄號或記錄號或字節(jié)數(shù)字節(jié)數(shù)變量名,將此變量中變量名,將
33、此變量中的數(shù)據(jù)寫入文件中的數(shù)據(jù)寫入文件中文件中的第一個記錄或字節(jié)位于位置文件中的第一個記錄或字節(jié)位于位置 1 1,第二個,第二個記錄或字節(jié)位于位置記錄或字節(jié)位于位置 2 2,依此類推。如果省略,依此類推。如果省略 recnumber,則將上一個,則將上一個 Get或或 Put 語句之后語句之后的(或上一個的(或上一個 Seek Seek 函數(shù)指出的)下一個記錄或函數(shù)指出的)下一個記錄或字節(jié)寫入。所有用于分界的逗號都必須羅列出來,字節(jié)寫入。所有用于分界的逗號都必須羅列出來,例如:例如:Put #4,FileBuffer語法格式:語法格式:FreeFile(rangenumber)2、FreeFi
34、le 函數(shù)函數(shù)返回一個返回一個 Integer,代表下一個可供,代表下一個可供 Open 語句使用的文件號。語句使用的文件號。指定指定 0(缺省值)則返回一個介于(缺省值)則返回一個介于 1-255 之之間的文件號。指定間的文件號。指定 1 則返回一個介于則返回一個介于 256-511 之間的文件號。之間的文件號。為為0 或或 13、Reset 語句語句關閉所有用關閉所有用 Open 語句打開的磁盤文件。并語句打開的磁盤文件。并將文件緩沖區(qū)的所有內(nèi)容寫入磁盤。將文件緩沖區(qū)的所有內(nèi)容寫入磁盤。4、EOF 函數(shù)函數(shù)返回一個返回一個 Integer,表明已經(jīng)到達為,表明已經(jīng)到達為 Random 或順
35、序或順序 Input 打開的文件的結尾。打開的文件的結尾。語法格式:語法格式:EOF(filenumber)文件號文件號5、LOF 函數(shù)函數(shù)返回一個返回一個 Long,表示用,表示用 Open 語句打開的文語句打開的文件的大小,該大小以字節(jié)為單位。件的大小,該大小以字節(jié)為單位。語法格式:語法格式:LOF(filenumber)文件號文件號6、FileLen 函數(shù)函數(shù)返回一個返回一個 Long,代表一個文件的長度,單位,代表一個文件的長度,單位是字節(jié)。它用在文件未打開時。是字節(jié)。它用在文件未打開時。語法格式:語法格式:FileLen(Pathname)路徑文件名路徑文件名7、關于記錄長度問題:、
36、關于記錄長度問題:在隨機文件中用在隨機文件中用Open語句時,語句時,記錄長度應盡記錄長度應盡量與實際記錄長度一致。若不一樣時,只能大量與實際記錄長度一致。若不一樣時,只能大不能小。不能小。例:用隨機文件建立通訊錄。通訊錄包括姓名、例:用隨機文件建立通訊錄。通訊錄包括姓名、電話號碼和郵政編碼。電話號碼和郵政編碼。在標準模塊中先定義數(shù)據(jù)類型:在標準模塊中先定義數(shù)據(jù)類型:Option ExplicitPublic Type Txl Name As String * 4 Tel_Number As String * 8 Post_Code As String * 6End Type窗體模塊中的代碼:
37、窗體模塊中的代碼:Option ExplicitDim Person As TxlDim Recnum As Long, RecL As LongPrivate Sub CmdExit_Click() reset EndEnd SubPrivate Sub CmdPut_Click() RecL = Len(Person) Open d:address For Random As #1 Len = RecL Recnum = LOF(1) RecL + 1 TxtRec = Str(Recnum) If TxtName And TxtTel And TxtPost Then Person.Na
38、me = TxtName Person.Tel_Number = TxtTel Person.Post_Code = TxtPost Put #1, Recnum, Person TxtName = TxtTel = TxtPost = Recnum = Recnum + 1 TxtRec = Str(Recnum) TxtName.SetFocus Else MsgBox (“數(shù)據(jù)輸入不能有空,請重新輸入數(shù)據(jù)輸入不能有空,請重新輸入) End If Close #1End Sub8、GET 語句語句語法格式:語法格式:文件號文件號記錄號記錄號或字節(jié)或字節(jié)數(shù)數(shù)變量名,將讀變量名,將讀出的數(shù)據(jù)放
39、入出的數(shù)據(jù)放入其中其中將一個已打開的磁盤文件讀入一個將一個已打開的磁盤文件讀入一個變量變量之中之中. .Get #filenumber, recnumber, varname在在 Open 語句打開的文件中,設置下一個準備語句打開的文件中,設置下一個準備讀讀/ /寫操作的位置。寫操作的位置。9、Seek 語句語句語法格式:語法格式:Seek #filenumber, position文件號文件號指出下一個讀寫操作指出下一個讀寫操作將要發(fā)生的位置將要發(fā)生的位置如果試圖對一個位置為負數(shù)或零的文件如果試圖對一個位置為負數(shù)或零的文件進行進行 Seek Seek 操作,則會導致錯誤發(fā)生。操作,則會導致錯
40、誤發(fā)生。注意注意:接上面的例子進行讀操作接上面的例子進行讀操作Private Sub CmdRead_Click() RecL = Len(Person) Open d:address For Random As #2 Len = RecL Recnum = InputBox(輸入記錄號輸入記錄號) If Recnum LOF(2) RecL Or Recnum = 0 Then MsgBox 此記錄不存在,請重新輸入此記錄不存在,請重新輸入: Close #2: Exit Sub Else Seek #2, Recnum Get #2, Recnum, Person TxtName.Text
41、 = Person.Name TxtTel.Text = Person.Tel_Number TxtPost.Text = Person.Post_Code End If Close #2End Sub例:用隨機文件例:用隨機文件建立一個通訊錄建立一個通訊錄檔案,通訊錄包檔案,通訊錄包括姓名、單位、括姓名、單位、性別、電話性別、電話.解:創(chuàng)建兩解:創(chuàng)建兩 個窗體對象個窗體對象Option ExplicitPrivate Type TXL Name As String * 4 Unit As String * 20 Sex As String * 2 Tel As String * 12End
42、Type在窗體模塊級中聲明自定義類型在窗體模塊級中聲明自定義類型Private Sub CmdWrite_Click() Dim Myinfo As TXL Dim i, As Integer If Text1 = Then MsgBox (請輸入姓名請輸入姓名): Text1.SetFocus: Exit Sub Myinfo.Name = Text1 If Text2 = Then MsgBox (請輸入單位請輸入單位): Text2.SetFocus: Exit Sub Myinfo.Unit = Text2 If Text3 = Then MsgBox (請輸入性別請輸入性別): Te
43、xt3.SetFocus: Exit Sub Myinfo.Sex = Text3 If Text4 = Then MsgBox (請輸入電話請輸入電話): Text4.SetFocus: Exit Sub Myinfo.Tel = Text4 Open e:qqq For Random As #1 Len = Len(Myinfo) i = LOF(1) / Len(Myinfo) Put #1, i + 1, Myinfo Close #1 Text1.SetFocus Text1 = Text2 = Text3 = Text4 = End SubPrivate Sub CmdQuery_
44、Click() Dim n, i As Integer Dim Myinfo As TXL Form2.Show Form2.Cls Open e:qqq For Random As #2 Len = Len(Myinfo) i = LOF(2) / Len(Myinfo) Form2.Print 姓名姓名, 單位單位, , 性別性別, 電話電話 Form2.Print - For n = 1 To i Get #2, n, Myinfo Form2.Print Myinfo.Name, Myinfo.Unit, Myinfo.Sex, Myinfo.Tel Next n Close #2En
45、d SubPrivate Sub CmdExit_Click() EndEnd SubPrivate Sub CmdBack_Click() Form2.Hide Form1.ShowEnd Sub&8-6 二進制文件二進制文件特點:特點:任何類型的文件任何類型的文件(順序文件或隨機文件順序文件或隨機文件)都可以以二進制訪問模式打開。都可以以二進制訪問模式打開。一、一、Open 語句語句Open pathname For Binary Access 存取類型存取類型 lock As filenumber 路徑文件名路徑文件名文件號文件號ReadWriteRead WriteSharedLock ReadLock WriteLock Read WriteOpen TESTFILE For Binary Access Write As #1例:例:以只允許寫操作的二進制方式打開文件以只允許寫操作的二進制方式打開文件。Open TESTFILE For Binary Access Read Lock Read
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國建筑國際集團校園招聘245人高頻重點提升(共500題)附帶答案詳解
- 2025中國人壽保險股份限公司南漳縣支公司13人(湖北)高頻重點提升(共500題)附帶答案詳解
- 2025下半年重慶酉陽自治縣教育事業(yè)單位招聘125人開考歷年高頻重點提升(共500題)附帶答案詳解
- 2025下半年浙江省舟山市生態(tài)環(huán)境局下屬事業(yè)單位招聘2人歷年高頻重點提升(共500題)附帶答案詳解
- 2025下半年四川省阿壩州事業(yè)單位招聘191人高頻重點提升(共500題)附帶答案詳解
- 2025下半年四川甘孜州事業(yè)單位招聘619人歷年高頻重點提升(共500題)附帶答案詳解
- 2025上海市行政法制研究所研究人員公開招聘歷年高頻重點提升(共500題)附帶答案詳解
- 2025上半年江蘇省南通通州事業(yè)單位招聘78人歷年高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川省資陽安岳縣人力資源和社會保障局考試招聘89人高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川涼山西昌市招聘教師212人高頻重點提升(共500題)附帶答案詳解
- GB∕T 41550-2022 畜禽屠宰用脫毛劑使用規(guī)范
- 輕型觸探儀地基承載力參數(shù)對照表
- 綜合管理部負責人(部長)崗位職責
- 檢驗科15項質量控制指標(檢驗科質控小組活動記錄)
- GB∕T 2518-2019 連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
- 海南省商品住宅專項維修資金管理辦法
- 美國文學各個時期作家作品集合
- 空運委托書范本
- 工業(yè)氯化芐企業(yè)標準連云港泰樂
- 機翼翼肋實例零件庫設計
- GB∕T 10596-2021 埋刮板輸送機
評論
0/150
提交評論