VB課件版 第10章 文件_第1頁
VB課件版 第10章 文件_第2頁
VB課件版 第10章 文件_第3頁
VB課件版 第10章 文件_第4頁
VB課件版 第10章 文件_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第10章文件數(shù)據(jù)文件FSO對象模型10.110.210.1數(shù)據(jù)文件1.文件的基本概念(1)字符字符(Character)是數(shù)據(jù)的最小單位。(2)域域(Field)是由幾個字符組成的。(3)記錄在數(shù)據(jù)庫中處理數(shù)據(jù)是以記錄(Record)為單位,記錄是由一群相關(guān)的域組成。(4)文件由一些具有一個或一個以上的記錄集合而成的數(shù)據(jù)單位稱為文件(File)。10.1數(shù)據(jù)文件2.文件訪問類型在VB中有三種文件訪問的類型:順序訪問文件、隨機訪問文件和二進制訪問文件。(1)順序訪問文件(2)隨機訪問文件(3)二進制訪問文件VB提供的大部分語句和函數(shù)對于三種文件類型都適用。表10.1列出可用于三種文件訪問類型的語句和函數(shù)。語句和函數(shù)順序型隨機型二進制型Close√√√Get√√Input()√√Input#√LineInput#√Open√√√Print#√Put√√Type...EndType√Write#√表10.1語句和函數(shù)10.1數(shù)據(jù)文件3.文件的存取步驟雖然使用三種文件訪問的數(shù)據(jù)類型不相同,但它們存取步驟相似,主要的步驟如下:(1)使用Open語句打開文件,并為文件指定一個文件號。(2)從文件中讀取部分或全部數(shù)據(jù)到內(nèi)存變量。(3)對變量中的數(shù)據(jù)進行處理。(4)將處理后的數(shù)據(jù)保存回文件。(5)使用Close語句關(guān)閉文件。10.1.1順序文件1.順序文件的打開與關(guān)閉(1)打開文件在對文件進行操作之前,必須用Open語句打開或建立一個文件。語法:

Open文件名[For模式][Access存取類型][鎖定]As[#]文件號

[Len=記錄長度](2)關(guān)閉文件文件讀寫完后,應(yīng)使用Close語句及時關(guān)閉。關(guān)閉某文件時,所有與該文件相關(guān)聯(lián)的緩沖區(qū)空間都被釋放,文件與其文件號之間的關(guān)聯(lián)將終結(jié)。如果沒有關(guān)閉文件,會導致部分和全部信息丟失。語法:

Close[[[#]文件號][,[#]文件號]…]例如,打開和關(guān)閉兩個文件:Dimi,FileNameFori=1To2 FileName="Score"&i '創(chuàng)建文件名 OpenFileNameForOutputAs#i '打開文件NextiClose '關(guān)閉所有文件10.1.1順序文件2.順序文件寫操作(1)Write#語句Write#語句用于將表達式寫到順序文件中。語法:

Write#文件號,[表達式列表]例如,把“2003010101,李小明”包括所有標點符號寫入到文件中: Write#1,2003010101,李小明(2)Print#語句Print#語句用于將一個或多個格式化數(shù)據(jù)寫到順序文件中。語法:

Print#文件號,[表達式列表]例如,把字符串“2003010101李小明”寫入文件號為1的文件中: Print#1,"2003010101";"李小明" 10.1.1順序文件3.順序文件的讀操作

(1)Input#語句

Input#語句用于從已打開的順序文件中讀出數(shù)據(jù)并賦給變量。語法:

Input#文件號,變量列表(2)LineInput#語句LineInput#語句用于從已打開的順序文件中讀出一行數(shù)據(jù),并賦給字符變量或變體型變量。語法:

LineInput#文件號,變量名(3)Input函數(shù)Input函數(shù)返回以Input或Binary方式打開的文件中的字符。語法:

Input(字符個數(shù),[#]文件號)與Input#語句不同,Input函數(shù)返回它所讀出的所有字符,包括逗號、回車符、空白列、換行符、引號和前導空格等。10.1.1順序文件4.常用函數(shù)和語句(1)FreeFile函數(shù)FreeFile函數(shù)返回下一個可供Open語句使用的文件號,提供一個尚未使用的文件號。使用FreeFile函數(shù)獲取可用的文件號是編程的良好習慣。語法:

FreeFile[(文件號范圍)](2)Lof函數(shù)Lof函數(shù)返回Open語句打開的文件大小,以字節(jié)為單位。語法:

LOF(文件號)(3)EOF函數(shù)EOF函數(shù)表明是否到達順序文件的結(jié)尾。使用EOF是為了避免在文件結(jié)尾處讀數(shù)據(jù)而產(chǎn)生錯誤,對于順序文件EOF函數(shù)告訴用戶是否到達文件的最后一個字符或數(shù)據(jù)項。語法:

EOF(文件號)EOF函數(shù)當?shù)竭_文件尾部時返回True,否則返回False。10.1.1順序文件(4)Seek語句Seek語句用來在用Open語句打開的文件中,設(shè)置下一個讀寫操作的位置,將相應(yīng)的文件指針移到指定的記錄位置。語法:Seek[#]文件號,位置其中,位置是指下一個讀寫操作將要發(fā)生的位置,是介于1~2147483647之間的數(shù)字??梢允钦突蜷L整型。

【例10-1】在窗體中放置三個文件系統(tǒng)控件驅(qū)動器列表框、目錄列表框和文件列表框,選擇文本文件.txt,打開并將文件內(nèi)容顯示在文本框中。界面設(shè)計:在窗體上放置驅(qū)動器列表框Drive1、目錄列表框Dir1和文件列表框File1,一個文本框Text1用來顯示文件內(nèi)容,一個標簽Label1用來顯示文件名。10.1.1順序文件屬性設(shè)置:文件列表框File1的Patten屬性設(shè)置為“*.txt”;文本框Text1的MultiLine屬性設(shè)置為True,ScrollBars屬性設(shè)置為3-Both。運行界面如圖10.1所示。程序代碼如下。圖10.1運行界面10.1.2隨機文件1.定義記錄類型隨機文件是由多個字段的記錄組成,采用用戶定義類型的變量對應(yīng)文件中的記錄。在標準模塊中使用“Type…EndType”語句定義一個類型,這個類型應(yīng)和隨機文件的記錄類型一致。例如,要建立一個學生成績的文件,則一個學生記錄可以定義為名為Score的用戶定義類型,有5個字段包括學號、姓名、語文、數(shù)學和英語,定義語句如下:PublicTypeScoreType

學號

AsString*10

姓名

AsString*16

語文

AsSingle

數(shù)學

AsSingle

英語

AsSingleEndType10.1.2隨機文件2.打開和關(guān)閉文件用Open語句以隨機訪問的方式打開隨機文件。語法:

Open文件名[ForRandom]As[#]文件號

[Len=記錄長度]

3.讀寫文件讀文件使用Get語句,寫文件使用Put語句。語法:

Get[#]文件號,[記錄號],變量名

Put[#]文件號,[記錄號],變量名10.1.2隨機文件4.添加記錄在隨機文件中添加記錄,是先找出文件的最后一個記錄的記錄號,然后將新的記錄寫在它的后面。添加記錄的步驟:(1)用Lof函數(shù)獲取文件的長度,用Len函數(shù)獲取記錄的長度;(2)最后一個記錄的記錄號=文件長度/記錄長度;(3)使用Put#語句向最后一個記錄的記錄號后面添加新記錄。10.1.2隨機文件5.刪除記錄將隨機文件中記錄刪除的最好方法是把文件中不需要刪除的記錄拷貝到一個臨時新文件中,然后刪除老文件。刪除記錄的步驟如下:(1)創(chuàng)建一個新文件。(2)把不刪除的所有記錄從原文件復制到新文件,而需刪除的記錄不復制。(3)關(guān)閉原文件并用Kill語句刪除原文件。(4)使用Name語句把新文件重命名為原文件名。10.1.2隨機文件【例10-2】打開文件在窗體中添加記錄,輸入記錄內(nèi)容。界面設(shè)計:在窗體中放置五個文本框數(shù)組Text1(0)~Text1(4),用來輸入五個字段,三個按鈕Command1~Command3用來“打開文件”、“添加記錄”和“結(jié)束”,設(shè)置Command2的Enabled屬性為False。運行界面如圖10.2所示。圖10.2運行界面10.1.2隨機文件程序設(shè)計:本程序使用兩個模塊,一個標準模塊Module1,一個窗體Form1模塊。(1)Module1模塊程序PublicTypeScoreType

學號

AsString*10

姓名

AsString*16

語文

AsSingle

數(shù)學

AsSingle

英語

AsSingleEndType(2)Form1模塊程序10.1.3二進制文件使用Open語句打開文件,Close語句關(guān)閉文件。二進制訪問中的

Open語句沒有指定記錄長度,即使指定記錄長度也被忽略。語法:

Open文件名

ForBinary

As[#]文件號

二進制存取方式與隨機存取方式一樣,使用Get#語句和Put#語句進行讀寫操作。二進制存取方式與隨機存取方式的不同在于:二進制存取可以定位到文件的任一字節(jié)位置即定位到字符;二進制存取從文件中讀出數(shù)據(jù)或向文件中寫入數(shù)據(jù)的長度取決于Get#或Put#語句中變量的長度。語法:

Get[#]文件號,[字節(jié)位置序號],變量名

Put[#]文件號,[字節(jié)位置序號],變量名例如,從“考試成績.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.創(chuàng)建FSO對象創(chuàng)建一個FSO對象可以通過將一個變量聲明為FileSystemObject對象類型或創(chuàng)建一個FileSystemObject對象來完成。(1)用聲明變量的方法成績一個FileSystemObject對象例如: DimFsoAsNewFileSystemObject(2)使用CreateObject方法來創(chuàng)建一個FileSystemObject對象。例如: DimFsoAsFileSystemObject SetFso=CreateObject(“Scripting.FileSystemObject”)10.2.1訪問FSO對象模型2.FSO對象的方法(1)GetDrive方法GetDrive方法返回一個與指定路徑中的驅(qū)動器相對應(yīng)的Drive對象。語法:

FileSystemObject.GetDrive(驅(qū)動器)(2)GetFolder和GetFile方法GetFolder方法返回一個和指定路徑中文件夾相對應(yīng)的Folder對象,GetFile方法返回一個和指定路徑中文件相對應(yīng)的File對象,文件夾路徑可以是絕對的或相對的路徑。語法:

FileSystemObject.GetFolder(文件夾路徑) FileSystemObject.GetFile(文件路徑)例如,訪問“考試成績.txt”文件:

DimFsoAsNewFileSystemObject DimF1AsFile SetF1=Fso.GetFile("c:\考試成績.txt")10.2.2驅(qū)動器和文件夾操作1.驅(qū)動器操作驅(qū)動器(Drive)對象可以獲得系統(tǒng)所用驅(qū)動器的信息,這些驅(qū)動器可以是物理的,也可以是位于網(wǎng)絡(luò)上的,Drive對象的屬性如表10.2所示。屬性名功能描述TotalSize以字節(jié)表示的驅(qū)動器空間。AvailableSpace或FreeSpace以字節(jié)表示的驅(qū)動器可用空間。DriveLetter給驅(qū)動器指定的字母號。DriveType驅(qū)動器類型。SeriaNumber驅(qū)動器序號。FileSystem驅(qū)動器使用的文件類型。IsReady驅(qū)動器是否可用。ShareName和VolumeName共享名稱和卷標名稱。PathRootFolder驅(qū)動器的路徑或根文件夾。表10.2Drive對象的屬性表10.2.2驅(qū)動器和文件夾操作【例10-3】在窗體中使用FSO對象模型來顯示各驅(qū)動器的信息。首先將引用FSO對象模型,選擇“工程”菜單“引用”菜單項,打開“引用”對話框,再選擇“MicrosoftScriptingRuntime”復選框。界面設(shè)計:在窗體界面中放置一個組合框Combo1用來顯示驅(qū)動器,一個文本框Text1用來顯示驅(qū)動器信息,Text1的MultiLine屬性設(shè)置為True,ScrollBars屬性設(shè)置為3-Both。運行界面如圖10.4所示,顯示“C:”驅(qū)動器的信息。圖10.4運行界面10.2.2驅(qū)動器和文件夾操作程序代碼如下:DimFsoAsFileSystemObjectDimDrvAsDrive

在裝載窗體時將驅(qū)動器名添加到組合框的列表中。PrivateSubForm_Load()'裝載窗體SetFso=CreateObject("Scripting.FileSystemObject")ForEachDrvInFso.Drives'顯示驅(qū)動器名Combo1.AddItemDrv.DriveLetterNextEndSub10.2.2驅(qū)動器和文件夾操作單擊組合框在文本框中顯示所選驅(qū)動器的文件系統(tǒng)類型、總空間和剩余空間信息。PrivateSubCombo1_Click()'單擊組合框選擇驅(qū)動器DimdrvNameAsStringdrvName=Combo1.List(Combo1.ListIndex)&":"SetDrv=Fso.GetDrive(Fso.GetDriveName(drvName))Text1.Text="文件系統(tǒng)類型:"&Drv.FileSystem&Chr(13)+Chr(10)Text1.Text=Text1.Text&"總空間:"&Drv.TotalSize/1024&"K字節(jié)"&Chr(13)+Chr(10)Text1.Text=Text1.Text&"剩余空間:"&Drv.FreeSpace/1024&"K字節(jié)"EndSub10.2.2驅(qū)動器和文件夾操作2.文件夾操作文件夾的操作可以通過Folder對象屬性和方法來實現(xiàn),F(xiàn)older對象的屬性和方法如表10.3所示。名稱描述屬性Name文件夾的名稱。Path返回指定文件夾的路徑。方法CreatFolder創(chuàng)建文件夾。Delete刪除文件夾。Move移動文件夾。Copy復制文件夾。FolderExist查找文件夾是否在驅(qū)動器。True存在返回False不存在返回GetParentFolderName查找文件夾的父文件夾名稱。GetSpecialFolder查找系統(tǒng)文件夾的路徑。表10.3Folder對象的屬性和方法表10.2.3文件操作1.文件對象屬性文件對象(File)屬性如表10.4所示。屬性描述Name文件的名稱。Path指定文件的路徑。DateCreated指定文件或文件夾的創(chuàng)建日期和時間。Drive指定文件或文件夾所在的驅(qū)動器符號。Size以字節(jié)為單位的指定文件大小。Type關(guān)于某個文件或文件夾類型的信息。DateLastModified最后一次修改指定文件或文件夾的日期和時間。Attributes文件或文件夾的屬性。表10.4File對象的屬性表10.2.3文件操作2.訪問文件所有的文件都必須先打開,才能進行讀寫,最后關(guān)閉文件。(1)創(chuàng)建文本文件在FSO對象模型的使用中有很多功能是冗余的,創(chuàng)建文件可以使用FileSystemObject或File對象的CreateTextFile方法。語法:

SetTextStream對象

=FSO對象.CreateTextFile(文件名,是否覆蓋原文件) SetTextStream對象

=Folder對象.CreateTextFile(文件名,是否覆蓋原文件)說明:是否覆蓋原文件為True表示覆蓋,否則是不覆蓋。如果文件名已存在,則是否覆蓋原文件參數(shù)是False或者沒有提供,則發(fā)生一個錯誤。例如,創(chuàng)建一個“考試成績.txt”文件的程序代碼如下: DimFsoAsNewFileSystemObject DimTextFileAsTextStream SetTextFile=Fso.CreateTextFile("c:\考試成績.txt",True)10.2.3文件操作(2)打開文本文件打開文件可以使用FileSystemObject對象的OpenTextFile方法或File對象的OpenAsTextStream方法。語法:

SetTextStream對象

=Fso對象.OpenTextFile(文件名,[輸入輸出方式,[是否創(chuàng)建新文件,[打開文件的格式]]]) SetTextStream對象

=File對象.OpenAsTextStream([輸入輸出方式,[打開文件的格式]])(3)關(guān)閉文件使用完文件后需要關(guān)閉文件,關(guān)閉文件可以使用TextStream對象的Close方法。例如,關(guān)閉“考試成績.txt”文件的程序代碼如下: TextFile.Close10.2.3文件操作3.寫數(shù)據(jù)到文件文本文件一旦創(chuàng)建,就可以向其中添加數(shù)據(jù),向打開的文件中寫入數(shù)據(jù),可以使用TextStream對象的Write或WriteLine方法。(1)Write方法Write方法用于向文件中添加文本。語法:

TextStream對象.Write(文本)(2)WriteLine方法WriteLine方法也是向文件中添加文本,不同的是WriteLine在文本的末尾添加換行符。語法:

TextStream對象.WriteLine(文本)(3)WriteBlankLines方法WriteBlankLines方法用于向文本文件中添加指定行數(shù)的空行。語法:

TextStream對象.WriteBlankLines(行數(shù))10.2.3文件操作4.讀取文件數(shù)據(jù)從文本文件中讀取數(shù)據(jù),可以使用TextStream對象的Read、ReadLine和ReadAll方法。Read方法:從一個文件中讀取指定數(shù)量的字符。ReadLine方法:讀取一整行,但不包括換行符。ReadAll方法:讀取一個文本文件的所有內(nèi)容。用Read和ReadLine方法時,可以使用Skip和SkipLine方法跳過部分的內(nèi)容。語法:TextStream對象.Read(字符)TextStream對象.ReadLineTextStream對象.ReadallTextStream對象.Skip(字符數(shù))10.2.3文件操作【例10-4】使用FSO對象模型在窗體中輸入學生成績到“考試成績.txt”文件中。界面設(shè)計:在窗體中放置五個文本框Text1(0)~Text1(4)控件數(shù)組,用來輸入五個字段。三個按鈕Command1~Command3,分別用來“創(chuàng)建文件”、“寫入記錄”和“結(jié)束”。運行界面如圖10.5所示。圖10.5運行界面10.2.3文件操作程序代碼如下:

DimFsoAsNewFileSystemObjectDimTextFileAsTextStream

單擊“創(chuàng)建文件”按鈕創(chuàng)建一個新文本文件。PrivateSubCommand1_Click()'單擊創(chuàng)建文件按鈕SetFso=CreateObject("Scripting.FileSystemObject")'創(chuàng)建新文件SetTextFile=Fso.CreateTextFile("c:\考試成績.txt",True)Command2.Enabled=TrueEndSub

單擊“寫入記錄”按鈕將文本框中的內(nèi)容組合成一個字符串寫入文件中,每個記錄為一行即一個字符串。10.2.3文件操作用記事本打開“c:\考試成績.txt”文件,顯示的文件內(nèi)容如圖10.6所示。圖10.6文件內(nèi)容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[刪除設(shè)置] FileSystemObject.DeleteFile

文件名,目標路徑[,刪除設(shè)置]10.2.3文件操作【例10-5】在窗體中放置三個文件系統(tǒng)控件驅(qū)動器列表框、目錄列表框和文件列表框,創(chuàng)建菜單實現(xiàn)“新建文件夾”、“復制文件”、“刪除”功能。(1)設(shè)計菜單,菜單編輯器如圖10.7所示。圖10.7菜單編輯器10.2.3文件操作(2)設(shè)計界面,在窗體中放置驅(qū)動器列表框Drive1、目錄列表框Dir1和文件列表框File1。運行界面如圖10.8所示。圖10.7菜單編輯器10.2.3文件操作(3)程序設(shè)計DimFsoAsNewFileSystemObjectDimFolder1AsFolderDimTextF1AsTextStream

PrivateSubForm_Load()'裝載窗體SetFso

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論