Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 13 章 檔案與資料夾處理 13-1 檔案與資料夾操作 13-1 檔案與資料夾操作 13-2 循序檔案的文字檔案讀寫 13-2 循序檔案的文字檔案讀寫 13-3 隨機檔案的處理 13-3 隨機檔案的處理 13-4 二進位檔案的讀寫 13-4 二進位檔案的讀寫 13-5 檔案對話方塊 13-5 檔案對話方塊.

Similar presentations


Presentation on theme: "第 13 章 檔案與資料夾處理 13-1 檔案與資料夾操作 13-1 檔案與資料夾操作 13-2 循序檔案的文字檔案讀寫 13-2 循序檔案的文字檔案讀寫 13-3 隨機檔案的處理 13-3 隨機檔案的處理 13-4 二進位檔案的讀寫 13-4 二進位檔案的讀寫 13-5 檔案對話方塊 13-5 檔案對話方塊."— Presentation transcript:

1 第 13 章 檔案與資料夾處理 13-1 檔案與資料夾操作 13-1 檔案與資料夾操作 13-2 循序檔案的文字檔案讀寫 13-2 循序檔案的文字檔案讀寫 13-3 隨機檔案的處理 13-3 隨機檔案的處理 13-4 二進位檔案的讀寫 13-4 二進位檔案的讀寫 13-5 檔案對話方塊 13-5 檔案對話方塊

2 13-1 檔案與資料夾操作 13-1-1 顯示資料夾與檔案清單 13-1-1 顯示資料夾與檔案清單 13-1-2 顯示檔案資訊 13-1-2 顯示檔案資訊 13-1-3 檔案刪除、更名與複製 13-1-3 檔案刪除、更名與複製

3 13-1-1 顯示資料夾與檔案清單 - 相關 函數 Visual Basic 提供資料夾的相關函數,可以取得 資料夾下檔案與子資料夾清單,還可以建立、切 換和刪除資料夾,如下表所示: Visual Basic 提供資料夾的相關函數,可以取得 資料夾下檔案與子資料夾清單,還可以建立、切 換和刪除資料夾,如下表所示:

4 13-1-1 顯示資料夾與檔案清單 - 顯示 檔案 例如:顯示副檔名.txt 的隱藏檔案,如下所 示: 例如:顯示副檔名.txt 的隱藏檔案,如下所 示: filename = Dir("*.txt", vbHidden) 上述程式碼傳回檔案屬性為隱藏 ( vbHidden ),且副檔名為.txt 的檔案名 稱,傳回值是第 1 個符合的檔案名稱,如果 需要下一個,請再次呼叫 Dir() 函數,但不 需任何參數,如下所示: 上述程式碼傳回檔案屬性為隱藏 ( vbHidden ),且副檔名為.txt 的檔案名 稱,傳回值是第 1 個符合的檔案名稱,如果 需要下一個,請再次呼叫 Dir() 函數,但不 需任何參數,如下所示: filename = Dir() 上述程式碼傳回下一個符合條件的檔案名 稱。 上述程式碼傳回下一個符合條件的檔案名 稱。

5 13-1-1 顯示資料夾與檔案清單 - 取得 檔案與資料夾清單 換句話說,配合 Do/Loop 迴圈,我們就可 以取得檔案或子資料夾清單,如下所示: 換句話說,配合 Do/Loop 迴圈,我們就可 以取得檔案或子資料夾清單,如下所示: strItem = Dir("*.*") Do Until strItem = "" lstFiles.Items.Add(strItem) lstFiles.Items.Add(strItem) strItem = Dir() ' 下一個 strItem = Dir() ' 下一個Loop

6 13-1-2 顯示檔案資訊 - 相關函數 對於指定的檔案或資料夾, Visual Basic 提 供函數可以取得檔案或資料夾屬性、檔案 尺寸和最後修改的日期 / 時間,如下表所示: 對於指定的檔案或資料夾, Visual Basic 提 供函數可以取得檔案或資料夾屬性、檔案 尺寸和最後修改的日期 / 時間,如下表所示:

7 13-1-2 顯示檔案資訊 - 範例 GetAttr() 函數同時可以取得檔案和資料夾 屬性,其使用範例,如下所示: GetAttr() 函數同時可以取得檔案和資料夾 屬性,其使用範例,如下所示: Dim fileAttr As FileAttribute fileAttr = GetAttr(txtFile.Text) 程式碼在宣告 FileAttribute 變數 fileAttr 後, 呼叫 GetAttr() 函數取得檔案的屬性常數和, 如下所示: 程式碼在宣告 FileAttribute 變數 fileAttr 後, 呼叫 GetAttr() 函數取得檔案的屬性常數和, 如下所示: FileAttribute.Normal Or FileAttribute.ReadOnly 上述運算式是檔案屬性常數的 Or 運算,其 值是檔案屬性的一般和唯讀。 上述運算式是檔案屬性常數的 Or 運算,其 值是檔案屬性的一般和唯讀。

8 13-1-2 顯示檔案資訊 - 常數 相關屬性常數可以是 FileAttribute 列舉常 數或 Visual Basic 常數,如下表所示: 相關屬性常數可以是 FileAttribute 列舉常 數或 Visual Basic 常數,如下表所示:

9 13-1-3 檔案刪除、更名與複製 Visual Basic 檔案處理函數可以刪除、更名 和複製檔案,其參數 Path 是完整的檔案路 徑字串,如下表所示: Visual Basic 檔案處理函數可以刪除、更名 和複製檔案,其參數 Path 是完整的檔案路 徑字串,如下表所示:

10 13-2 循序檔案的文字檔案讀寫 13-2-1 檔案種類 13-2-1 檔案種類 13-2-2 文字檔案的讀寫 13-2-2 文字檔案的讀寫

11 13-2-1 檔案種類 - 說明 檔案是儲存在電腦磁碟機中的位元組資料,當 Visual Basic 應用程式存取檔案內容時,需要知 道位元組資料是代表字元、數值、整數或字串, 取決於檔案類型。 檔案是儲存在電腦磁碟機中的位元組資料,當 Visual Basic 應用程式存取檔案內容時,需要知 道位元組資料是代表字元、數值、整數或字串, 取決於檔案類型。 Visual Basic 提供三種檔案存取類型,如下所示: Visual Basic 提供三種檔案存取類型,如下所示: 循序檔案:擁有讀取( Input )、寫入( Output )和 新增( Append )三種模式,可以將字串資料寫入與讀 取文字檔案,例如:記錄檔和一般文字檔案。 循序檔案:擁有讀取( Input )、寫入( Output )和 新增( Append )三種模式,可以將字串資料寫入與讀 取文字檔案,例如:記錄檔和一般文字檔案。 隨機檔案:提供隨機( Random )模式,使用類似資 料庫記錄( Records )方式來存取檔案,每一個記錄 的長度是相等的。 隨機檔案:提供隨機( Random )模式,使用類似資 料庫記錄( Records )方式來存取檔案,每一個記錄 的長度是相等的。 二進位檔案:使用二進位( Binary )模式存取檔案的 位元組資料,特別適用在可變長度的資料。 二進位檔案:使用二進位( Binary )模式存取檔案的 位元組資料,特別適用在可變長度的資料。

12 13-2-1 檔案種類 -VB 函數 在存取各類型檔案時,讀取和寫入檔案的 Visual Basic 函數,如下表所示: 在存取各類型檔案時,讀取和寫入檔案的 Visual Basic 函數,如下表所示:

13 13-2-2 文字檔案的讀寫 - 開啟與關閉 檔案 ( 相關函數 ) 循序檔案最常的應用是讀寫文字檔案,例如: Windows 記錄檔或【記事本】程式建立的一般文 字檔案。 循序檔案最常的應用是讀寫文字檔案,例如: Windows 記錄檔或【記事本】程式建立的一般文 字檔案。 Visual Basic 開啟、關閉或讀寫檔案時,都是使 用整數的檔案編號值來識別開啟的檔案(因為程 式可能同時開啟多個檔案),其相關函數,如下 表所示: Visual Basic 開啟、關閉或讀寫檔案時,都是使 用整數的檔案編號值來識別開啟的檔案(因為程 式可能同時開啟多個檔案),其相關函數,如下 表所示:

14 13-2-2 文字檔案的讀寫 - 開啟與關閉 檔案 ( 開啟檔案 ) 首先使用 FreeFile() 函數取得可用檔案編號後, 就可以使用 FileOpen() 函數開啟檔案,如下: 首先使用 FreeFile() 函數取得可用檔案編號後, 就可以使用 FileOpen() 函數開啟檔案,如下: fileNum = FreeFile() FileOpen(fileNum, fileName, OpenMode.Output) 程式碼在取得 fileNum 檔案編號後,以 OpenMode.Output 模式開啟 fileName 檔案。當 然也可以自行指定檔案編號,如下所示: 程式碼在取得 fileNum 檔案編號後,以 OpenMode.Output 模式開啟 fileName 檔案。當 然也可以自行指定檔案編號,如下所示: FileOpen(1, fileName, OpenMode.Output) FileOpen() 函數直接指定檔案編號為整數 1 ,檔 案存取類型是最後參數的 OpenMode 列舉常數。 FileOpen() 函數直接指定檔案編號為整數 1 ,檔 案存取類型是最後參數的 OpenMode 列舉常數。

15 13-2-2 文字檔案的讀寫 - 開啟與關閉 檔案 ( 列舉常數 ) OpenMode 列舉常數以循序檔案來說有三 種模式,如下表所示: OpenMode 列舉常數以循序檔案來說有三 種模式,如下表所示:

16 13-2-2 文字檔案的讀寫 - 開啟與關閉 檔案 ( 關閉檔案 ) 在執行完檔案存取後,請執行 FileClose() 函數關閉檔案,如下所示: 在執行完檔案存取後,請執行 FileClose() 函數關閉檔案,如下所示:FileClose(fileNum)

17 13-2-2 文字檔案的讀寫 - 讀取與寫入 檔案 ( 相關函數 ) 當使用 OpenFile() 函數成功開啟檔案後, 我們可以執行相關函數來寫入或讀取檔案 內容。其相關函數如下表所示: 當使用 OpenFile() 函數成功開啟檔案後, 我們可以執行相關函數來寫入或讀取檔案 內容。其相關函數如下表所示:

18 13-2-2 文字檔案的讀寫 - 讀取與寫入 檔案 ( 寫入 ) 我們只需呼叫 PrintLine() 函數就可以將字 串寫入檔案,如下所示: 我們只需呼叫 PrintLine() 函數就可以將字 串寫入檔案,如下所示: PrintLine(fileNum, txtLine.Text) 上述程式碼依檔案開啟的模式來處理字串 寫入, Output 模式清除 fileNum 檔案編號 的檔案內容後,才寫入字串, Append 模式 是將字串加到檔尾,因為使用 PrintLine() 函數,所以在字串後會加上換行符號。 上述程式碼依檔案開啟的模式來處理字串 寫入, Output 模式清除 fileNum 檔案編號 的檔案內容後,才寫入字串, Append 模式 是將字串加到檔尾,因為使用 PrintLine() 函數,所以在字串後會加上換行符號。

19 13-2-2 文字檔案的讀寫 - 讀取與寫入 檔案 ( 讀取 ) 如果讀取檔案內容,也就是使用 Input 模式 來開啟檔案,我們可以使用 LineInput() 函 數讀取一行文字內容。 如果讀取檔案內容,也就是使用 Input 模式 來開啟檔案,我們可以使用 LineInput() 函 數讀取一行文字內容。 如果是讀取整個檔案內容,請配合迴圈來 處理檔案讀取,如下所示: 如果是讀取整個檔案內容,請配合迴圈來 處理檔案讀取,如下所示: Do Until EOF(fileNum) strContent &= LineInput(fileNum) & _ strContent &= LineInput(fileNum) & _ vbNewLine vbNewLineLoop

20 13-3 隨機檔案的處理 13-3-1 Visual Basic 的結構 13-3-1 Visual Basic 的結構 13-3-2 隨機檔案的讀寫 13-3-2 隨機檔案的讀寫

21 13-3 隨機檔案的處理 循序檔案處理如同流水一般,只能單一方 向從頭讀到尾或寫入檔尾,並不能回頭重 寫或讀取。隨機檔案不同於循序檔案是以 記錄方式來儲存,換句話說,程式允許隨 機存取其中任一筆記錄或更改其資料。 循序檔案處理如同流水一般,只能單一方 向從頭讀到尾或寫入檔尾,並不能回頭重 寫或讀取。隨機檔案不同於循序檔案是以 記錄方式來儲存,換句話說,程式允許隨 機存取其中任一筆記錄或更改其資料。 因為隨機檔案是以記錄為存取單位,所以 在建立隨機檔案讀寫前,我們需要建立記 錄結構,即 Visual Basic 結構。 因為隨機檔案是以記錄為存取單位,所以 在建立隨機檔案讀寫前,我們需要建立記 錄結構,即 Visual Basic 結構。

22 13-3-1 Visual Basic 的結構 - 語法 Visual Basic 結構是自定的資料型態( User- Defined Types ),使用 Structure/End Structure 程式敘述來定義新型態,其語法如下 所示: Visual Basic 結構是自定的資料型態( User- Defined Types ),使用 Structure/End Structure 程式敘述來定義新型態,其語法如下 所示: Structure 型態名稱 Public | Private | Dim 成員變數 Public | Private | Dim 成員變數 End Structure 上述語法定義新資料型態,可以使用 Public 、 Private 或 Dim 關鍵字來宣告成員變數。其中 Private 宣告的成員變數只能在 Structure/End Structure 結構中使用。 上述語法定義新資料型態,可以使用 Public 、 Private 或 Dim 關鍵字來宣告成員變數。其中 Private 宣告的成員變數只能在 Structure/End Structure 結構中使用。

23 13-3-1 Visual Basic 的結構 - 結構範 例 例如:儲存學生成績資料的結構 Student ,如下 所示: 例如:儲存學生成績資料的結構 Student ,如下 所示: Structure Student Public id As Integer Public id As Integer Public name As String Public name As String Public mathScore As Integer Public mathScore As Integer Public englishScore As Integer Public englishScore As Integer End Structure 上述結構的成員擁有學號 id 、學生姓名 name 、 數學成績 mathScore 和英文成績 englishScore 。 上述結構的成員擁有學號 id 、學生姓名 name 、 數學成績 mathScore 和英文成績 englishScore 。

24 13-3-1 Visual Basic 的結構 - 宣告結 構變數和指定值 因為 Student 是自訂的新型態,所以程式碼可以 使用此新型態來宣告變數,如下所示: 因為 Student 是自訂的新型態,所以程式碼可以 使用此新型態來宣告變數,如下所示: Dim std1 As Student 上述程式碼宣告結構變數 std1 後,就可以指定成 員變數值,如下所示: 上述程式碼宣告結構變數 std1 後,就可以指定成 員變數值,如下所示: std1.id = 1 std1.name = " 陳會安 " std1.mathScore = 78 std1.englishScore = 65

25 13-3-2 隨機檔案的讀寫 - 結構宣告 在 Visual Basic 應用程式開啟隨機檔案前,我們 需要先定義儲存資料的記錄結構,如下所示: 在 Visual Basic 應用程式開啟隨機檔案前,我們 需要先定義儲存資料的記錄結構,如下所示: Structure Student Public id As Integer Public id As Integer Public name As String Public name As String Public mathScore As Integer Public mathScore As Integer Public englishScore As Integer Public englishScore As Integer End Structure 結構宣告因為隨機檔儲存的記錄長度是相同大小, String 型態是一種可變長度的資料型態,因此在 變數宣告前,使用 VBFixedString 屬性指定字串 是固定長度。 結構宣告因為隨機檔儲存的記錄長度是相同大小, String 型態是一種可變長度的資料型態,因此在 變數宣告前,使用 VBFixedString 屬性指定字串 是固定長度。

26 13-3-2 隨機檔案的讀寫 - 開啟隨機檔 案 隨機檔案的開啟也是使用 FileOpen() 函數, 檔案模式為 OpenMode.Random ,如下所 示: 隨機檔案的開啟也是使用 FileOpen() 函數, 檔案模式為 OpenMode.Random ,如下所 示: FileOpen(fileNum, fileName, _ OpenMode.Random,,, recLength) OpenMode.Random,,, recLength) 上述函數的最後 1 個參數是記錄長度,也就 是前述結構的尺寸,可以使用 Len() 函數來 取得其大小。 上述函數的最後 1 個參數是記錄長度,也就 是前述結構的尺寸,可以使用 Len() 函數來 取得其大小。

27 13-3-2 隨機檔案的讀寫 - 新增、更新 和刪除記錄 ( 相關函數 ) 在開啟隨機檔案後,我們可以使用 Visual Basic 函數來讀取與寫入記錄資料,如下表 所示: 在開啟隨機檔案後,我們可以使用 Visual Basic 函數來讀取與寫入記錄資料,如下表 所示:

28 13-3-2 隨機檔案的讀寫 - 新增、更新 和刪除記錄 ( 存取記錄 ) FilePut() 和 FileGet() 函數可以分別在隨機檔案新 增和取得記錄資料,如下所示: FilePut() 和 FileGet() 函數可以分別在隨機檔案新 增和取得記錄資料,如下所示: last += 1 FilePut(fileNum, std, last) 上述程式碼新增一筆記錄, last 變數是最後一筆 記錄的編號。筆者使用 LOF() 函數在 Form1 表單 的 Load 事件處理程序計算檔案共有多少筆記錄, 如下所示: 上述程式碼新增一筆記錄, last 變數是最後一筆 記錄的編號。筆者使用 LOF() 函數在 Form1 表單 的 Load 事件處理程序計算檔案共有多少筆記錄, 如下所示: FileOpen(1, fileName, OpenMode.Input) length = LOF(1) FileClose(1) last = length \ Len(std)

29 13-3-2 隨機檔案的讀寫 - 新增、更新 和刪除記錄 ( 刪除記錄 ) 刪除記錄是清除記錄資料,例如:將學號 ID 設為 -1 ,不過,此筆記錄仍然儲存在檔 案中,為了真正刪除記錄,即避免檔案有 空記錄且節省檔案空間,完整記錄刪除的 操作,如下所示: 刪除記錄是清除記錄資料,例如:將學號 ID 設為 -1 ,不過,此筆記錄仍然儲存在檔 案中,為了真正刪除記錄,即避免檔案有 空記錄且節省檔案空間,完整記錄刪除的 操作,如下所示: 建立新的隨機檔。 建立新的隨機檔。 將不是空的記錄複製到新檔案中。 將不是空的記錄複製到新檔案中。 使用 Kill() 函數刪除原隨機檔。 使用 Kill() 函數刪除原隨機檔。 使用 Rename() 函數將新檔更名成原隨機檔。 使用 Rename() 函數將新檔更名成原隨機檔。

30 13-4 二進位檔案的讀寫 - 開啟 二進位檔案特別適用在可變長度資料的存取,例 如:在第 13-2-2 節是一行一行的寫入與讀取文字 檔案。如果改用二進位檔,可以一次讀取或寫入 整個文字檔案的內容。 二進位檔案特別適用在可變長度資料的存取,例 如:在第 13-2-2 節是一行一行的寫入與讀取文字 檔案。如果改用二進位檔,可以一次讀取或寫入 整個文字檔案的內容。 在 Visual Basic 程式開啟二進位檔案也是使用 FileOpen() 函數,模式是 OpenMode.Binary , 如下所示: 在 Visual Basic 程式開啟二進位檔案也是使用 FileOpen() 函數,模式是 OpenMode.Binary , 如下所示: FileOpen(1, fileName, OpenMode.Binary) 上述 FileOpen() 函數不需要開啟隨機檔時的記錄 大小參數 recLength 。 上述 FileOpen() 函數不需要開啟隨機檔時的記錄 大小參數 recLength 。

31 13-4 二進位檔案的讀寫 - 讀寫 二進位檔案的讀取和寫入同樣是使用 FileGet() 和 FilePut() 函數。二進位和隨機檔案的差異,如下 所示: 二進位檔案的讀取和寫入同樣是使用 FileGet() 和 FilePut() 函數。二進位和隨機檔案的差異,如下 所示: FilePut() 和 FileGet() 函數是連續從磁碟檔案寫入和讀 取資料,在處理資料時,並不用指定記錄編號,如下 所示:FilePut() 和 FileGet() 函數是連續從磁碟檔案寫入和讀 取資料,在處理資料時,並不用指定記錄編號,如下 所示: FilePut(1, txtOutput.Text) FileGet() 和 FilePut() 函數在讀取和寫入可變長度字串 時,例如:文字檔案,並不會處理雙位元組的中文字, 而是將它視為 2 個字元,所以在讀取和寫入字串時,一 個中文字視為 2 個字元。FileGet() 和 FilePut() 函數在讀取和寫入可變長度字串 時,例如:文字檔案,並不會處理雙位元組的中文字, 而是將它視為 2 個字元,所以在讀取和寫入字串時,一 個中文字視為 2 個字元。

32 13-5 檔案對話方塊 - 說明 在第 10 章已經說明過 Visual Basic 預設的 字型與色彩對話方塊,在這一節筆者準備 說明檔案對話方塊,依用途分為兩種控制 項,如下所示: 在第 10 章已經說明過 Visual Basic 預設的 字型與色彩對話方塊,在這一節筆者準備 說明檔案對話方塊,依用途分為兩種控制 項,如下所示: OpenFileDialog 控制項:控制項可以選擇開啟 檔案,它就是 Windows 作業系統的「開啟檔案」 對話方塊。OpenFileDialog 控制項:控制項可以選擇開啟 檔案,它就是 Windows 作業系統的「開啟檔案」 對話方塊。 SaveFileDialog 控制項:控制項是用來選擇儲 存檔案,它就是 Windows 作業系統的「儲存檔 案」對話方塊。SaveFileDialog 控制項:控制項是用來選擇儲 存檔案,它就是 Windows 作業系統的「儲存檔 案」對話方塊。

33 13-5 檔案對話方塊 - 建立

34 13-5 檔案對話方塊 - 屬性 OpenFileDialog 和 SaveFileDialog 控制項 的常用屬性,如下表所示: OpenFileDialog 和 SaveFileDialog 控制項 的常用屬性,如下表所示:

35 13-5 檔案對話方塊 - 選取檔案 檔案對話方塊的開啟和其他預設對話方塊 相似,使用者在選好檔案後,傳回 DialogResult.OK ,程式碼可以使用 FileName 屬性取得使用者選取檔案的完整 路徑。 檔案對話方塊的開啟和其他預設對話方塊 相似,使用者在選好檔案後,傳回 DialogResult.OK ,程式碼可以使用 FileName 屬性取得使用者選取檔案的完整 路徑。


Download ppt "第 13 章 檔案與資料夾處理 13-1 檔案與資料夾操作 13-1 檔案與資料夾操作 13-2 循序檔案的文字檔案讀寫 13-2 循序檔案的文字檔案讀寫 13-3 隨機檔案的處理 13-3 隨機檔案的處理 13-4 二進位檔案的讀寫 13-4 二進位檔案的讀寫 13-5 檔案對話方塊 13-5 檔案對話方塊."

Similar presentations


Ads by Google