freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

visualc2008大學(xué)教程第十九章(已修改)

2025-05-26 20:02 本頁(yè)面
 

【正文】 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 1 第 19章 文件與流 理工大學(xué)華信軟件學(xué)院 張一鳴 2021年 8月 20日 C語(yǔ)言程序設(shè)計(jì) C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 2 第 18章 文件與流 ? 創(chuàng)建、讀、寫和更新文件 ? C流類層次 ? 用 File與 Directory類取得計(jì)算機(jī)上的文件與目錄信息 ? 用 LINQ查找目錄 ? 順序訪問(wèn)文件處理 ? 用類 FileStream、 StreamReader與 StreamWriter讀寫文本文件 ? 用 LINQ和 yield return迭代文件記錄,找到匹配指定條件的記錄 ? 用類與 BinaryFormatter讀寫對(duì)象文件 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 3 簡(jiǎn)介 ? 存儲(chǔ)在程序變量或數(shù)組中的數(shù)據(jù)是臨時(shí)的,在程序運(yùn)行結(jié)束后就會(huì)消失。文件則用來(lái) 永久性 地保存大量的數(shù)據(jù),在創(chuàng)建數(shù)據(jù)的程序終止后仍然保存。計(jì)算機(jī)把文件存放在輔助存儲(chǔ)器上,如磁盤、光盤、閃存( U盤)或磁帶上。 ? 本章介紹 C程序中如何創(chuàng)建、更新和處理數(shù)據(jù),首先概述從位到文件的數(shù)據(jù)層次,然后介紹 FCL的一些文件處理類,進(jìn)而用實(shí)例介紹如何確定計(jì)算機(jī)上的文件與目錄信息。最后介紹如何操作文本文件和二進(jìn)制格式對(duì)象格式的二進(jìn)制文件。 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 4 數(shù)據(jù)層次 一個(gè)計(jì)算機(jī)系統(tǒng)是按照層次組織數(shù)據(jù)的,即由位組成字節(jié),字節(jié)組成字段(域),字段組成記錄,記錄組成文件,文件組成數(shù)據(jù)庫(kù)。 字段 是一組有意義的字符。例如,一個(gè)學(xué)生的姓名、學(xué)號(hào)、專業(yè)等。 一個(gè)記錄描述一個(gè)實(shí)體( Entity),它可以是一個(gè)人,一個(gè)地方、一個(gè)事物或者一個(gè)事件。有關(guān)實(shí)體的信息需要管理和維護(hù)。 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 5 記錄的構(gòu)成 ? 計(jì)算機(jī)處理的數(shù)據(jù)項(xiàng)構(gòu)成了 “ 數(shù)據(jù)的層次 ” 。在這個(gè)結(jié)構(gòu)中,數(shù)據(jù)項(xiàng)從位到字符再到域是越來(lái)越大、越來(lái)越復(fù)雜。 ? 通常,記錄是由多個(gè)域構(gòu)成的。例如,一張工資表中,為雇員建立的一條記錄會(huì)包含下述各域: 雇員標(biāo)識(shí)符 名字 地址 小時(shí)工資等級(jí) 免稅申請(qǐng)?zhí)? 年度收入 稅收額 在上面的例子中,每一個(gè)域都針對(duì)同一個(gè)雇員。一個(gè)文件就是一組相關(guān)的記錄的集合。記錄的個(gè)數(shù)可以是幾條,也可能是成千上萬(wàn)條。 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 6 文件中記錄的查找 —關(guān)鍵字 為了查找文件中某個(gè)制定的記錄,在 文件中 的 每個(gè)記錄至少要選出 一個(gè)字段 (或 域 ) 來(lái) 作為記錄 關(guān)鍵字( record key) ,它唯一地標(biāo)識(shí) 屬于某個(gè)人或?qū)嶓w的的記錄。例如,在上面提到的工資記錄表中,通常用 雇員標(biāo)識(shí)號(hào) 作為記錄關(guān)鍵字。 Sally Black Tom Blue Iris Orange Judy Green Randy Red Judy Green 文件 記錄 Judy 域 字節(jié) 01001010 位 1 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 7 文件中記錄的組織方式 文件中的記錄有多種組織方式。最常見的是按記錄關(guān)鍵字字段的順序存儲(chǔ)記錄,按這種方式存儲(chǔ)記錄的文件稱為“順序文件”( sequential file)。順序存取文件的特點(diǎn)是:在這類文件進(jìn)行讀寫操作時(shí),總是從文件首開始,從頭到尾地讀或?qū)?。也就是說(shuō),當(dāng)順序存取文件時(shí),要讀第 n個(gè)字節(jié),先要讀取前 n1個(gè)字節(jié),而不能直接讀取第 n個(gè)字節(jié),寫操作也類似。 直接存取文件又稱為隨機(jī)存取文件,其特點(diǎn)是:可以直接指定要讀寫的字節(jié)在文件中的位置,然后直接對(duì)此位置上的數(shù)據(jù)進(jìn)行讀寫操作。 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 8 多文件管理 絕大多數(shù)商業(yè)機(jī)構(gòu)要用許多文件來(lái)存儲(chǔ)數(shù)據(jù)。例如,公司里會(huì)有工資表文件、應(yīng)收項(xiàng)目文件、應(yīng)付賬目文件、存貨文件和其他多種類型的文件。有時(shí)把一組相關(guān)的文件稱為“數(shù)據(jù)庫(kù)”( database)。 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 9 員工檔案 姓名 地址 性別 職務(wù) …… 工資單 基礎(chǔ)工資 獎(jiǎng)金、交稅 其他支出 實(shí)發(fā)工資 …… 福利 人身保險(xiǎn) 養(yǎng)老金計(jì)劃 保健計(jì)劃 退休保障 …… 文件管 理系統(tǒng) 員工檔案 應(yīng)用程序 工資管理 應(yīng)用程序 福利管理 應(yīng)用程序 培訓(xùn) 專業(yè)培訓(xùn) 外語(yǔ)培訓(xùn) 崗位培訓(xùn) …… 培訓(xùn)管理 應(yīng)用程序 人事部 人事部 人事部 人事部 集成的人力資源數(shù)據(jù)庫(kù) C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 10 傳統(tǒng)的文件組織方式存在的問(wèn)題 ? 數(shù)據(jù)的冗余和混淆 在多個(gè)數(shù)據(jù)文件中重復(fù)出現(xiàn)相同的數(shù)據(jù)為數(shù)據(jù)冗余,它導(dǎo)致數(shù)據(jù)存儲(chǔ)空間的浪費(fèi)和數(shù)據(jù)的不一致。 ? 程序 數(shù)據(jù)的依賴性 是指數(shù)據(jù)文件和維護(hù)它的相關(guān)應(yīng)用程序之間的過(guò)分依賴。 ? 缺乏靈活性 傳統(tǒng)的文件系統(tǒng)可以處理定義完好的報(bào)表,但對(duì)于特殊的表和臨時(shí)定義的需求卻無(wú)能為力。 ? 安全性差 對(duì)數(shù)據(jù)缺乏控制和管理,實(shí)際上對(duì)訪問(wèn)和分發(fā)信息失控。 ? 數(shù)據(jù)的共享性和有效性差 不同文件的信息相互沒有聯(lián)系,使得信息不能被共享和及時(shí)訪問(wèn)。 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 12 FCL中的文件處理類 前面章節(jié)已經(jīng)介紹過(guò)的 Console方法 WriteLine和Write用 , Console方法 Read和 ReadLine用 。 FCL中文件處理類的派生關(guān)系: TextReader TextWriter Stream StreamReader StreamWriter FileStream 派生 從文件輸入文本 將文件輸出到文本 從文件輸入文本 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 13 C文件操作類的結(jié)構(gòu)示意 System. Object System. MarshallByRefObj, . Path . File . Directory . Stream . TextReader . TextWriter . FileSystemInfo . Component . FileStream . StreamReader . StreamWriter . FilleInfo . DirectoryInfo . FileSystemWatcher C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 14 常用類的簡(jiǎn)單說(shuō)明 ? File: 提供創(chuàng)建、復(fù)制、刪除、移動(dòng)和打開文件的靜態(tài)方法,并協(xié)助創(chuàng)建 FileStream對(duì)象。 ? Directory: 提供創(chuàng)建、復(fù)制、刪除、移動(dòng)和打開目錄的靜態(tài)方法。 ? Path: 對(duì)包含文件或目錄路徑信息的字符串執(zhí)行操作。 ? FileInfo:提供創(chuàng)建、復(fù)制、刪除、移動(dòng)和打開文件的實(shí)例方法,并協(xié)助創(chuàng)建 FileStream對(duì)象。 ? DirectoryInfo: 提供創(chuàng)建、復(fù)制、枚舉目錄和子目錄的實(shí)例方法。 ? FileStream: 指向文件流,支持對(duì)文件的讀 /寫和隨機(jī)訪問(wèn)文件。 ? StreamReader: 從流中讀取字符數(shù)據(jù)。 ? StreamWriter: 向流中寫入字符數(shù)據(jù)。 ? FileSystemWatcher:用于監(jiān)視文件和目錄的變化。 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 15 File與 Directory類 C分別提供了 File類和 Directory類用于操縱文件和目錄信息。這兩個(gè)類可以被實(shí)例化,但不能被其他類繼承。 File類支持對(duì)文件的創(chuàng)建、復(fù)制、刪除、移動(dòng)和打開的靜態(tài)方法,并協(xié)助創(chuàng)建文件流 FileStream對(duì)象。該類包含了 40多個(gè)方法,下表列出了一些常用的方法。注意: ? 由于 File類中的所有方法都是靜態(tài)的 ,所以如果只想執(zhí)行一個(gè)操作,那么使用 File類中方法的效率比使用 FileInfo類中的方法要高。 ? File類中的靜態(tài)方法對(duì)所有方法都執(zhí)行安全檢查,因此如果打算多次重用某個(gè)對(duì)象,要用 FileInfo類中的方法。 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 16 File類的靜態(tài)方法(第一部分) 靜態(tài)方法 描述 AppendText 返回 StreamWriter, 將文本添加到現(xiàn)有文件或建新文件 Copy 將文件復(fù)制到新文件 Create 創(chuàng)建文件并返回相關(guān)聯(lián)的 FileStream CreateText 創(chuàng)建文本文件并返回相關(guān)聯(lián)的 StreamWriter Delete 刪除指定文件 Existes 指定文件存在時(shí)返回 true,否則返回 false GetCreationTime 返回 DateTime對(duì)象,表示文件創(chuàng)建時(shí)間 GetLastAccessTime 返回 DateTime對(duì)象,表示文件最后訪問(wèn)時(shí)間 GetLastWriteTime 返回 DateTime對(duì)象,表示文件修改時(shí)間 Move 將指定文件移到指定目錄,并提供指定新文件名的選項(xiàng) Open 打開指定路徑上的 FileStream OpenRead 打開現(xiàn)有文件以進(jìn)行讀取 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 17 File類的靜態(tài)方法(第二部分) 靜態(tài)方法 描述 OpenText 打開現(xiàn)有 UTF8編碼文件以進(jìn)行讀取 OpenWrite 打開現(xiàn)有文件以進(jìn)行寫入 ReadAllBytes 打開一文件,將其內(nèi)容讀入字符串,并關(guān)閉該文件 ReadAllLines 打開文本文件,將其所有行讀入字符串?dāng)?shù)組,并關(guān)閉之 ReadAllText 打開文本文件,將其所有行讀入一個(gè)字符串,并關(guān)閉之 Replace 用其他文件內(nèi)容替換指定文件內(nèi)容 SetCreationTime 設(shè)置創(chuàng)建文件的日期和時(shí)間 SetLastAccessTime 設(shè)置最后訪問(wèn)文件的日期和時(shí)間 SetLastWriteTime 設(shè)置最后修改文件的日期和時(shí)間 WriteAllBytes 創(chuàng)建新文件,向其寫入指定字符數(shù)組,并關(guān)閉該文件 WriteAllLines 創(chuàng)建新文件,向其寫入指定字符串,并關(guān)閉之 WriteAllText 創(chuàng)建新文件,向其寫入指定內(nèi)容,并關(guān)閉之 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 18 例子 演示 File類中的方法應(yīng)用 1. 新建一個(gè) Windows應(yīng)用程序,命名為 test1。默認(rèn)窗體為 2. Form1窗體中添加一個(gè) TextBox控件和一個(gè) Button控件。其中, TextBox控件用來(lái)輸入要?jiǎng)?chuàng)建的文件路徑及名稱, Button控件用來(lái)接收用戶鼠標(biāo)單擊并執(zhí)行創(chuàng)建文件操作。 3. 注意使用與文件、文件夾及流相關(guān)的類時(shí),首先需要添加 。 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 19 例子 演示 File類中的方法應(yīng)用 Ⅰ using System。 using 。 using 。 using 。 using 。 using 。 using 。 using 。 namespace _ { public partial class Form1 : Form { public Form1 ( ) { InitializeComponent ( )。 } private void button1_Click ( object sender, EventArgs e ) { if ( == ) // { ( 文件名不能為空! )。 } 判斷輸入的文件名是否為空 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 20 例子 演示 File類中的方法應(yīng)用 Ⅱ else { if ( ( ) ) { (該文件已經(jīng)存在 )。 } else { ()。 } } } } } 使用 File類的 Exists方法判斷要?jiǎng)?chuàng)建的文件是否存在 使用 File類的 Create方法創(chuàng)建文件 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴 21 例子 程序運(yùn)行結(jié)果 ⑴ 程序運(yùn)行前 ⑵ 輸入文件名 ⑶ 輸入文件名 若已存在,報(bào)警 C語(yǔ)言程序設(shè)計(jì) 理工大學(xué)華信軟件學(xué)院 張一鳴
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1