




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章文件數據文件FSO對象模型10.110.210.1數據文件1.文件的基本概念(1)字符字符(Character)是數據的最小單位。(2)域域(Field)是由幾個字符組成的。(3)記錄在數據庫中處理數據是以記錄(Record)為單位,記錄是由一群相關的域組成。(4)文件由一些具有一個或一個以上的記錄集合而成的數據單位稱為文件(File)。10.1數據文件2.文件訪問類型在VB中有三種文件訪問的類型:順序訪問文件、隨機訪問文件和二進制訪問文件。(1)順序訪問文件(2)隨機訪問文件(3)二進制訪問文件VB提供的大部分語句和函數對于三種文件類型都適用。表10.1列出可用于三種文件訪問類型的語句和函數。語句和函數順序型隨機型二進制型Close√√√Get√√Input()√√Input#√LineInput#√Open√√√Print#√Put√√Type...EndType√Write#√表10.1語句和函數10.1數據文件3.文件的存取步驟雖然使用三種文件訪問的數據類型不相同,但它們存取步驟相似,主要的步驟如下:(1)使用Open語句打開文件,并為文件指定一個文件號。(2)從文件中讀取部分或全部數據到內存變量。(3)對變量中的數據進行處理。(4)將處理后的數據保存回文件。(5)使用Close語句關閉文件。10.1.1順序文件1.順序文件的打開與關閉(1)打開文件在對文件進行操作之前,必須用Open語句打開或建立一個文件。語法:
Open文件名[For模式][Access存取類型][鎖定]As[#]文件號
[Len=記錄長度](2)關閉文件文件讀寫完后,應使用Close語句及時關閉。關閉某文件時,所有與該文件相關聯的緩沖區空間都被釋放,文件與其文件號之間的關聯將終結。如果沒有關閉文件,會導致部分和全部信息丟失。語法:
Close[[[#]文件號][,[#]文件號]…]例如,打開和關閉兩個文件:Dimi,FileNameFori=1To2 FileName="Score"&i '創建文件名 OpenFileNameForOutputAs#i '打開文件NextiClose '關閉所有文件10.1.1順序文件2.順序文件寫操作(1)Write#語句Write#語句用于將表達式寫到順序文件中。語法:
Write#文件號,[表達式列表]例如,把“2003010101,李小明”包括所有標點符號寫入到文件中: Write#1,2003010101,李小明(2)Print#語句Print#語句用于將一個或多個格式化數據寫到順序文件中。語法:
Print#文件號,[表達式列表]例如,把字符串“2003010101李小明”寫入文件號為1的文件中: Print#1,"2003010101";"李小明" 10.1.1順序文件3.順序文件的讀操作
(1)Input#語句
Input#語句用于從已打開的順序文件中讀出數據并賦給變量。語法:
Input#文件號,變量列表(2)LineInput#語句LineInput#語句用于從已打開的順序文件中讀出一行數據,并賦給字符變量或變體型變量。語法:
LineInput#文件號,變量名(3)Input函數Input函數返回以Input或Binary方式打開的文件中的字符。語法:
Input(字符個數,[#]文件號)與Input#語句不同,Input函數返回它所讀出的所有字符,包括逗號、回車符、空白列、換行符、引號和前導空格等。10.1.1順序文件4.常用函數和語句(1)FreeFile函數FreeFile函數返回下一個可供Open語句使用的文件號,提供一個尚未使用的文件號。使用FreeFile函數獲取可用的文件號是編程的良好習慣。語法:
FreeFile[(文件號范圍)](2)Lof函數Lof函數返回Open語句打開的文件大小,以字節為單位。語法:
LOF(文件號)(3)EOF函數EOF函數表明是否到達順序文件的結尾。使用EOF是為了避免在文件結尾處讀數據而產生錯誤,對于順序文件EOF函數告訴用戶是否到達文件的最后一個字符或數據項。語法:
EOF(文件號)EOF函數當到達文件尾部時返回True,否則返回False。10.1.1順序文件(4)Seek語句Seek語句用來在用Open語句打開的文件中,設置下一個讀寫操作的位置,將相應的文件指針移到指定的記錄位置。語法:Seek[#]文件號,位置其中,位置是指下一個讀寫操作將要發生的位置,是介于1~2147483647之間的數字。可以是整型或長整型。
【例10-1】在窗體中放置三個文件系統控件驅動器列表框、目錄列表框和文件列表框,選擇文本文件.txt,打開并將文件內容顯示在文本框中。界面設計:在窗體上放置驅動器列表框Drive1、目錄列表框Dir1和文件列表框File1,一個文本框Text1用來顯示文件內容,一個標簽Label1用來顯示文件名。10.1.1順序文件屬性設置:文件列表框File1的Patten屬性設置為“*.txt”;文本框Text1的MultiLine屬性設置為True,ScrollBars屬性設置為3-Both。運行界面如圖10.1所示。程序代碼如下。圖10.1運行界面10.1.2隨機文件1.定義記錄類型隨機文件是由多個字段的記錄組成,采用用戶定義類型的變量對應文件中的記錄。在標準模塊中使用“Type…EndType”語句定義一個類型,這個類型應和隨機文件的記錄類型一致。例如,要建立一個學生成績的文件,則一個學生記錄可以定義為名為Score的用戶定義類型,有5個字段包括學號、姓名、語文、數學和英語,定義語句如下:PublicTypeScoreType
學號
AsString*10
姓名
AsString*16
語文
AsSingle
數學
AsSingle
英語
AsSingleEndType10.1.2隨機文件2.打開和關閉文件用Open語句以隨機訪問的方式打開隨機文件。語法:
Open文件名[ForRandom]As[#]文件號
[Len=記錄長度]
3.讀寫文件讀文件使用Get語句,寫文件使用Put語句。語法:
Get[#]文件號,[記錄號],變量名
Put[#]文件號,[記錄號],變量名10.1.2隨機文件4.添加記錄在隨機文件中添加記錄,是先找出文件的最后一個記錄的記錄號,然后將新的記錄寫在它的后面。添加記錄的步驟:(1)用Lof函數獲取文件的長度,用Len函數獲取記錄的長度;(2)最后一個記錄的記錄號=文件長度/記錄長度;(3)使用Put#語句向最后一個記錄的記錄號后面添加新記錄。10.1.2隨機文件5.刪除記錄將隨機文件中記錄刪除的最好方法是把文件中不需要刪除的記錄拷貝到一個臨時新文件中,然后刪除老文件。刪除記錄的步驟如下:(1)創建一個新文件。(2)把不刪除的所有記錄從原文件復制到新文件,而需刪除的記錄不復制。(3)關閉原文件并用Kill語句刪除原文件。(4)使用Name語句把新文件重命名為原文件名。10.1.2隨機文件【例10-2】打開文件在窗體中添加記錄,輸入記錄內容。界面設計:在窗體中放置五個文本框數組Text1(0)~Text1(4),用來輸入五個字段,三個按鈕Command1~Command3用來“打開文件”、“添加記錄”和“結束”,設置Command2的Enabled屬性為False。運行界面如圖10.2所示。圖10.2運行界面10.1.2隨機文件程序設計:本程序使用兩個模塊,一個標準模塊Module1,一個窗體Form1模塊。(1)Module1模塊程序PublicTypeScoreType
學號
AsString*10
姓名
AsString*16
語文
AsSingle
數學
AsSingle
英語
AsSingleEndType(2)Form1模塊程序10.1.3二進制文件使用Open語句打開文件,Close語句關閉文件。二進制訪問中的
Open語句沒有指定記錄長度,即使指定記錄長度也被忽略。語法:
Open文件名
ForBinary
As[#]文件號
二進制存取方式與隨機存取方式一樣,使用Get#語句和Put#語句進行讀寫操作。二進制存取方式與隨機存取方式的不同在于:二進制存取可以定位到文件的任一字節位置即定位到字符;二進制存取從文件中讀出數據或向文件中寫入數據的長度取決于Get#或Put#語句中變量的長度。語法:
Get[#]文件號,[字節位置序號],變量名
Put[#]文件號,[字節位置序號],變量名例如,從“考試成績.txt”文件的指定位置40,寫入一個字符串“2003010106”:DimDataAsSingleDimS1AsStringOpen"c:\考試成績"ForBinaryAs#1S1="2003010106"Put#1,40,S110.2FSO對象模型FSO對象模型包含在Scripting類型庫(Scrrun.Dll)中,必須引用“MicrosoftScriptingRuntime”對象模塊才能使用FSO對象模型。選擇“工程”菜單“引用”菜單項,打開“引用”對話框,再選擇“MicrosoftScriptingRuntime”復選框,如圖10.3所示。圖10.3引用Scripting類型庫10.2.1訪問FSO對象模型1.創建FSO對象創建一個FSO對象可以通過將一個變量聲明為FileSystemObject對象類型或創建一個FileSystemObject對象來完成。(1)用聲明變量的方法成績一個FileSystemObject對象例如: DimFsoAsNewFileSystemObject(2)使用CreateObject方法來創建一個FileSystemObject對象。例如: DimFsoAsFileSystemObject SetFso=CreateObject(“Scripting.FileSystemObject”)10.2.1訪問FSO對象模型2.FSO對象的方法(1)GetDrive方法GetDrive方法返回一個與指定路徑中的驅動器相對應的Drive對象。語法:
FileSystemObject.GetDrive(驅動器)(2)GetFolder和GetFile方法GetFolder方法返回一個和指定路徑中文件夾相對應的Folder對象,GetFile方法返回一個和指定路徑中文件相對應的File對象,文件夾路徑可以是絕對的或相對的路徑。語法:
FileSystemObject.GetFolder(文件夾路徑) FileSystemObject.GetFile(文件路徑)例如,訪問“考試成績.txt”文件:
DimFsoAsNewFileSystemObject DimF1AsFile SetF1=Fso.GetFile("c:\考試成績.txt")10.2.2驅動器和文件夾操作1.驅動器操作驅動器(Drive)對象可以獲得系統所用驅動器的信息,這些驅動器可以是物理的,也可以是位于網絡上的,Drive對象的屬性如表10.2所示。屬性名功能描述TotalSize以字節表示的驅動器空間。AvailableSpace或FreeSpace以字節表示的驅動器可用空間。DriveLetter給驅動器指定的字母號。DriveType驅動器類型。SeriaNumber驅動器序號。FileSystem驅動器使用的文件類型。IsReady驅動器是否可用。ShareName和VolumeName共享名稱和卷標名稱。PathRootFolder驅動器的路徑或根文件夾。表10.2Drive對象的屬性表10.2.2驅動器和文件夾操作【例10-3】在窗體中使用FSO對象模型來顯示各驅動器的信息。首先將引用FSO對象模型,選擇“工程”菜單“引用”菜單項,打開“引用”對話框,再選擇“MicrosoftScriptingRuntime”復選框。界面設計:在窗體界面中放置一個組合框Combo1用來顯示驅動器,一個文本框Text1用來顯示驅動器信息,Text1的MultiLine屬性設置為True,ScrollBars屬性設置為3-Both。運行界面如圖10.4所示,顯示“C:”驅動器的信息。圖10.4運行界面10.2.2驅動器和文件夾操作程序代碼如下:DimFsoAsFileSystemObjectDimDrvAsDrive
在裝載窗體時將驅動器名添加到組合框的列表中。PrivateSubForm_Load()'裝載窗體SetFso=CreateObject("Scripting.FileSystemObject")ForEachDrvInFso.Drives'顯示驅動器名Combo1.AddItemDrv.DriveLetterNextEndSub10.2.2驅動器和文件夾操作單擊組合框在文本框中顯示所選驅動器的文件系統類型、總空間和剩余空間信息。PrivateSubCombo1_Click()'單擊組合框選擇驅動器DimdrvNameAsStringdrvName=Combo1.List(Combo1.ListIndex)&":"SetDrv=Fso.GetDrive(Fso.GetDriveName(drvName))Text1.Text="文件系統類型:"&Drv.FileSystem&Chr(13)+Chr(10)Text1.Text=Text1.Text&"總空間:"&Drv.TotalSize/1024&"K字節"&Chr(13)+Chr(10)Text1.Text=Text1.Text&"剩余空間:"&Drv.FreeSpace/1024&"K字節"EndSub10.2.2驅動器和文件夾操作2.文件夾操作文件夾的操作可以通過Folder對象屬性和方法來實現,Folder對象的屬性和方法如表10.3所示。名稱描述屬性Name文件夾的名稱。Path返回指定文件夾的路徑。方法CreatFolder創建文件夾。Delete刪除文件夾。Move移動文件夾。Copy復制文件夾。FolderExist查找文件夾是否在驅動器。True存在返回False不存在返回GetParentFolderName查找文件夾的父文件夾名稱。GetSpecialFolder查找系統文件夾的路徑。表10.3Folder對象的屬性和方法表10.2.3文件操作1.文件對象屬性文件對象(File)屬性如表10.4所示。屬性描述Name文件的名稱。Path指定文件的路徑。DateCreated指定文件或文件夾的創建日期和時間。Drive指定文件或文件夾所在的驅動器符號。Size以字節為單位的指定文件大小。Type關于某個文件或文件夾類型的信息。DateLastModified最后一次修改指定文件或文件夾的日期和時間。Attributes文件或文件夾的屬性。表10.4File對象的屬性表10.2.3文件操作2.訪問文件所有的文件都必須先打開,才能進行讀寫,最后關閉文件。(1)創建文本文件在FSO對象模型的使用中有很多功能是冗余的,創建文件可以使用FileSystemObject或File對象的CreateTextFile方法。語法:
SetTextStream對象
=FSO對象.CreateTextFile(文件名,是否覆蓋原文件) SetTextStream對象
=Folder對象.CreateTextFile(文件名,是否覆蓋原文件)說明:是否覆蓋原文件為True表示覆蓋,否則是不覆蓋。如果文件名已存在,則是否覆蓋原文件參數是False或者沒有提供,則發生一個錯誤。例如,創建一個“考試成績.txt”文件的程序代碼如下: DimFsoAsNewFileSystemObject DimTextFileAsTextStream SetTextFile=Fso.CreateTextFile("c:\考試成績.txt",True)10.2.3文件操作(2)打開文本文件打開文件可以使用FileSystemObject對象的OpenTextFile方法或File對象的OpenAsTextStream方法。語法:
SetTextStream對象
=Fso對象.OpenTextFile(文件名,[輸入輸出方式,[是否創建新文件,[打開文件的格式]]]) SetTextStream對象
=File對象.OpenAsTextStream([輸入輸出方式,[打開文件的格式]])(3)關閉文件使用完文件后需要關閉文件,關閉文件可以使用TextStream對象的Close方法。例如,關閉“考試成績.txt”文件的程序代碼如下: TextFile.Close10.2.3文件操作3.寫數據到文件文本文件一旦創建,就可以向其中添加數據,向打開的文件中寫入數據,可以使用TextStream對象的Write或WriteLine方法。(1)Write方法Write方法用于向文件中添加文本。語法:
TextStream對象.Write(文本)(2)WriteLine方法WriteLine方法也是向文件中添加文本,不同的是WriteLine在文本的末尾添加換行符。語法:
TextStream對象.WriteLine(文本)(3)WriteBlankLines方法WriteBlankLines方法用于向文本文件中添加指定行數的空行。語法:
TextStream對象.WriteBlankLines(行數)10.2.3文件操作4.讀取文件數據從文本文件中讀取數據,可以使用TextStream對象的Read、ReadLine和ReadAll方法。Read方法:從一個文件中讀取指定數量的字符。ReadLine方法:讀取一整行,但不包括換行符。ReadAll方法:讀取一個文本文件的所有內容。用Read和ReadLine方法時,可以使用Skip和SkipLine方法跳過部分的內容。語法:TextStream對象.Read(字符)TextStream對象.ReadLineTextStream對象.ReadallTextStream對象.Skip(字符數)10.2.3文件操作【例10-4】使用FSO對象模型在窗體中輸入學生成績到“考試成績.txt”文件中。界面設計:在窗體中放置五個文本框Text1(0)~Text1(4)控件數組,用來輸入五個字段。三個按鈕Command1~Command3,分別用來“創建文件”、“寫入記錄”和“結束”。運行界面如圖10.5所示。圖10.5運行界面10.2.3文件操作程序代碼如下:
DimFsoAsNewFileSystemObjectDimTextFileAsTextStream
單擊“創建文件”按鈕創建一個新文本文件。PrivateSubCommand1_Click()'單擊創建文件按鈕SetFso=CreateObject("Scripting.FileSystemObject")'創建新文件SetTextFile=Fso.CreateTextFile("c:\考試成績.txt",True)Command2.Enabled=TrueEndSub
單擊“寫入記錄”按鈕將文本框中的內容組合成一個字符串寫入文件中,每個記錄為一行即一個字符串。10.2.3文件操作用記事本打開“c:\考試成績.txt”文件,顯示的文件內容如圖10.6所示。圖10.6文件內容10.2.3文件操作5.移動、復制和刪除文件(1)移動文件使用File.Move或FileSystemObject.MoveFile方法可以移動一個文件。語法:
File.Move目標路徑
FileSystemObject.MoveFile源路徑,目標路徑(2)復制文件使用File.Copy或FileSystemObject.CopyFile方法可以復制文件。語法:
File.Copy目標路徑[,是否覆蓋] FileSystemObject.CopyFile源文件,目標路徑[,是否覆蓋](3)刪除文件使用File.Delete或FileSystemObject.DeleteFile方法都是刪除一個指定的文件。語法:
File.Delete[刪除設置] FileSystemObject.DeleteFile
文件名,目標路徑[,刪除設置]10.2.3文件操作【例10-5】在窗體中放置三個文件系統控件驅動器列表框、目錄列表框和文件列表框,創建菜單實現“新建文件夾”、“復制文件”、“刪除”功能。(1)設計菜單,菜單編輯器如圖10.7所示。圖10.7菜單編輯器10.2.3文件操作(2)設計界面,在窗體中放置驅動器列表框Drive1、目錄列表框Dir1和文件列表框File1。運行界面如圖10.8所示。圖10.7菜單編輯器10.2.3文件操作(3)程序設計DimFsoAsNewFileSystemObjectDimFolder1AsFolderDimTextF1AsTextStream
PrivateSubForm_Load()'裝載窗體SetFso
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學安全教育考試題及答案
- 新疆昌吉回族自治州木壘縣中2024-2025學年高二下生物期末質量跟蹤監視模擬試題含解析
- 天津市薊州區2024-2025學年數學高二下期末調研試題含解析
- 城市更新項目廠房土地購置及開發合作合同
- 休閑農業場地外包租賃合同范本
- 農業銀行信用的借款合同(6篇)
- 愛崗敬業個人先進事跡(3篇)
- 員工配車公司管理制度
- 公路實施方案的試題及答案
- 公路工程定額分析試題及答案
- 人工智能技術在混合式日語教學中的應用及效果評估
- 鄭州電子商務職業學院《文化創意產業管理學》2023-2024學年第二學期期末試卷
- 2024建安杯信息通信建設行業安全競賽題庫(試題含答案1-464題)
- 2025屆安徽省滁州市高三一模考試地理試題(原卷版+解析版)
- 基于動態勢能獎勵機制的雙足機器人穩定行走控制研究
- 查找身邊的安全隱患
- 乳腺癌手術的整體治療
- 2023年陜西省普通高校職業教育單獨招生考試英語試題及答案
- 工程師轉正工作總結
- 8 推翻帝制 民族覺醒 說課稿 -2023-2024學年道德與法治五年級下冊統編版
- 麗聲北極星分級繪本第二級下-
評論
0/150
提交評論