<span id="plx27"><var id="plx27"></var></span>
<dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>

    《C#面向對象程序設計》第11章用流進行文件輸入和輸出

    上傳人:dfg****19 文檔編號:248196082 上傳時間:2024-10-22 格式:PPT 頁數(shù):31 大小:580KB
    收藏 版權申訴 舉報 下載
    《C#面向對象程序設計》第11章用流進行文件輸入和輸出_第1頁
    第1頁 / 共31頁
    《C#面向對象程序設計》第11章用流進行文件輸入和輸出_第2頁
    第2頁 / 共31頁
    《C#面向對象程序設計》第11章用流進行文件輸入和輸出_第3頁
    第3頁 / 共31頁

    下載文檔到電腦,查找使用更方便

    15 積分

    下載資源

    還剩頁未讀,繼續(xù)閱讀

    資源描述:

    《《C#面向對象程序設計》第11章用流進行文件輸入和輸出》由會員分享,可在線閱讀,更多相關《《C#面向對象程序設計》第11章用流進行文件輸入和輸出(31頁珍藏版)》請在裝配圖網(wǎng)上搜索。

    1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,第,11,章 用流進行文件輸入和輸出,主要內容與學習目標,11.1,文件與流,11.2,內存和緩沖流,11.3 StreamReader,和,StreamWriter,11.4,二進制讀取器和寫出器,11.5,序列化對象,11.6,可視化繼承,11.7,順序訪問文件,11.8,隨機存取文件,11.9,使用序列化對象存儲數(shù)據(jù),主要內容與學習目標,主要內容:,(1),文件與流的概念。,(2),使用,FileStream,。,(3),將圖像文件存入數(shù)據(jù)庫、從數(shù)據(jù)庫讀取,Image,類型數(shù)據(jù)并以圖像文件保存。,(4

    2、),使用,FileStream.Seek,方法隨機訪問文件。,(5),向文件追加數(shù)據(jù)。,(6),內存和緩沖流、從指定的,MemoryStream,對象創(chuàng)建,Image,對象。,(7)StreamReader,和,StreamWriter,。,(8)BinaryReader,和,BinaryWriter,。,(9),序列化對象。,(10,可視化繼承。,(11),順序訪問文件。,(12),隨機存取文件。,(13),使用序列化對象存儲數(shù)據(jù)。,學習目標:,(1),對文件進行新建、讀、寫和更新操作。,(2),熟悉,StreamReader,和,StreamWriter,的使用。,(3),熟悉,Binar

    3、yReader,和,BinaryWriter,的使用。,(4),熟悉,MemoryStream,的使用。,(5),理解序列化和采用序列化從文件讀出對象及從文件寫入對象。,(6),熟悉順序訪問和隨機訪問文件處理。,11.1,文件與流,文件是永久存儲的由一些特定順序的字節(jié)組成的一個有序的、具有名稱的集合。因此,對于文件,人們常會想到目錄路徑、磁盤存儲、文件和目錄名等方面。流提供一種向后備存儲器寫入字節(jié)和從后備存儲器讀取字節(jié)的方式,后備存儲器是一個存儲媒介,例如磁盤或內存。正如除磁盤外存在多種后備存儲器一樣,除文件流之外也存在多種流。例如,還存在網(wǎng)絡流、內存流等。,Stream,類及其派生類提供這些

    4、不同類型的輸入和輸出的一般視圖。,所有表示流的類都是從,Stream,類繼承的。,Stream,是所有流的抽象基類,所以它的對象不能被實例化。,Stream,對象具有以下一種或多種能力。,讀:將數(shù)據(jù)從一個流傳輸?shù)揭粋€數(shù)據(jù)結構,(,如字節(jié)數(shù)組,),中。,寫:將數(shù)據(jù)從一個數(shù)據(jù)結構寫到一個流中。,定位:查詢和修改流中的當前位置。,11.1.1 FileStream,11.1.2,隨機訪問文件,11.1.3,向文件追加數(shù)據(jù),11.1.1 FileStream,FileStream,類繼承于,Stream,類,它主要用于文件的輸入和輸出。,任務,11.1,:使用,FileStream,解決方案:,(1)

    5、,新建一空項目,Testfilestream,。,(2),向項目中添加代碼文件,(3),添加引用,System.Windows.Forms,。,(4),按,F5,鍵編譯并運行應用程序,輸出結果,如圖,11.1,所示,。,任務,11.2,:將圖像文件存入數(shù)據(jù)庫,解決方案:,(1),創(chuàng)建一,Windows,應用程序項目,將項目的名稱命名為,TestIO,。,(2),向,Windows,窗體上添加一命令按鈕,button1,,將該按鈕的,Text,屬性設置為“選擇圖像存入數(shù)據(jù)庫”,然后向窗體添加一文件對話框控件,openFileDialog1,。,(3),在窗體類,Form1,的前面添加如下語句:,

    6、(4),雙擊,【,選擇圖像存入數(shù)據(jù)庫,】,按鈕,在該按鈕的,Click,事件中編寫代碼:,(5),測試代碼。按,F5,鍵編譯并運行應用程序,單擊,【,選擇圖像存入數(shù)據(jù)庫,】,按鈕,在出現(xiàn)的對話框中,(,如圖,11.2,所示,),,選擇一圖像文件,單擊,【,打開,】,按鈕,如果圖像文件存入數(shù)據(jù)庫,則出現(xiàn),如圖,11.3,所示,的消息框。,任務,11.3,:從數(shù)據(jù)庫讀取,Image,類型數(shù)據(jù)并保存為圖像文件,解決方案:,(1),在,D,盤中創(chuàng)建“,sh”,目錄。,(2),打開前一個示例創(chuàng)建的,TestIO,項目,在解決方案資源管理器中雙擊,Form1.cs,,打開,Windows,窗體,再向,Wi

    7、ndows,窗體中添加一個,button,按鈕,將其,text,屬性設置為“讀取數(shù)據(jù)存入文件”。,(3),雙擊,【,讀取數(shù)據(jù)存入文件,】,按鈕,在其,Click,事件處理程序中輸入如下代碼:,(4),測試代碼。按,F5,鍵編譯并運行應用程序,單擊,【,讀取數(shù)據(jù)存入文件,】,按鈕,如果從數(shù)據(jù)庫讀取的圖像數(shù)據(jù)存入指定的圖像文件成功,則出現(xiàn),如圖,11.4,所示,的消息框。在,D,盤創(chuàng)建的,sh,目錄中可看到,myimage.gif,圖像文件。,圖,11.1,程序運行結果,圖,11.2,打開文件對話框,圖,11.3,消息框,圖,11.4,消息框,11.1.2,隨機訪問文件,當打開一個流時,流指針一般

    8、位于流的第一個字節(jié)上。大多數(shù)流支持定位,(seek),,也就可以將內部流指針移到任意位置。因此當我們要在讀操作和寫操作之間進行轉換時,可以通過定位避免關閉和打開流,也就是不必采用“創(chuàng)建寫關閉打開讀關閉”模式。,FileStream,對象支持使用,Seek,方法隨機訪問文件。,Seek,方法允許把讀,/,寫位置移動到文件內的任何位置。這是通過字節(jié)偏移參考點參數(shù)來完成的。字節(jié)偏移量是相對于查找參考點而言的,該參考點可以是基礎文件的開始、當前位置或結尾,分別由,SeekOrigin,類的,3,個屬性,Begin(,指定流的開頭,),、,Current(,指定流內的當前位置,),、,End(,指定流的

    9、結尾,),表示。,任務,11.4,:定位操作,解決方案:,(1),將任務,11.1,代碼文件修改,(2),按,F5,鍵編譯并運行應用程序,輸出結果,如圖,11.5,所示,。,圖,11.5,定位操作,11.1.3,向文件追加數(shù)據(jù),任務,11.5,:向文件追加數(shù)據(jù),(1),將,任務,11.4,中的代碼文件修改,(2),按,F5,鍵編譯并運行應用程序,輸出結果,如圖,11.7,所示,。由輸出結果可知已向文件追加了,5,個字符,abcde,圖,11.7,追加數(shù)據(jù),11.2,內存和緩沖流,與,FileStream,一樣,,MemoryStream,類和,BufferedStream,類也派生自抽象的,S

    10、tream,類。因此,MemoryStream,類和,BufferedStream,類共享許多性質和功能。設計它們的目的都是為了對內存進行數(shù)據(jù)讀寫,而不是對持久性存儲進行讀寫。如果需要,它們都可與另一種流,(,比如一個文件,),相關聯(lián),因此它們可充當內存和持久性存儲之間的緩沖區(qū)。,MemoryStream,類提供了,WriteTo(,用于向另一個流進行寫操作,),等方法。同樣,,BufferedStream,對象一般在進行構造時與另一個流相關聯(lián),并且當你關閉,BufferedStream,時它的內容被刷新到相關聯(lián)的流。,任務,11.6,:顯示圖像,主要知識點:使用,SqlCommand,數(shù)據(jù)命

    11、令對象從數(shù)據(jù)庫中檢索數(shù)據(jù)。從數(shù)據(jù)讀取器對象讀取字段值。創(chuàng)建,MemoryStream,對象。從指定的,MemoryStream,對象創(chuàng)建,Image,對象。,問題描述:,創(chuàng)建,如圖,11.8,所示,的應用程序,當單擊,【,顯示圖像,】,按鈕時,從數(shù)據(jù)庫中讀取圖像,文件數(shù)據(jù),將其圖像顯示在窗體的圖像框中。,我們使用,SqlCommand,數(shù)據(jù)命令對象從數(shù)據(jù)庫中檢索數(shù)據(jù),并將檢索數(shù)據(jù)到的數(shù)據(jù)存放于數(shù)據(jù)讀取器,(SqlDataReader),對象,再從數(shù)據(jù)讀取器對象讀取字段,picture,的值,將其存放到字節(jié)數(shù)組中,然后以字節(jié)數(shù)組作為參數(shù)創(chuàng)建,MemoryStream,對象。再調用,Image.F

    12、romStream,方法以,MemoryStream,對象作為參數(shù)創(chuàng)建,Image,對象,最后將創(chuàng)建的,Image,對象賦給圖像框的,Image,屬性。,圖,11.8,從數(shù)據(jù)創(chuàng)建圖像對象,11.3 StreamReader,和,StreamWriter,FileStream,適合于讀取原始字節(jié),(,二進制,),數(shù)據(jù),如果你希望處理字符數(shù)據(jù),那么,StreamReader,和,StreamWriter,等類更適合。這些類在后臺使用一個,FileStream,對象,關閉,StreamReader,和,StreamWriter,也就關閉了底層的,FileStream,。,StreamReader,和

    13、,StreamWriter,使你得以從文件讀取字符順序流或將字符順序流寫入文件中。,StreamReader,和,StreamWriter,類鏡像,BinaryReader,和,BinaryWriter,類的功能,但它們以文本而不是二進制形式讀取和寫入信息。,任務,11.7,:電話號碼簿,主要知識點:將文本寫入文件。在現(xiàn)有文件中添加文本。讀取文本文件。從文件中讀取一行。,問題描述:創(chuàng)建,如圖,11.9,所示,的應用程序,當單擊,【,添加,】,按鈕時,將文本框中輸入的數(shù)據(jù),(,姓名和電話,),寫入文件,當單擊,【,顯示,】,按鈕時,讀文件并將結果顯示在文本框中。,解決方案:,(1),創(chuàng)建項目和窗

    14、體。,選擇,【,文件,】|【,新建,】|【,項目,】,命令,打開,【,新建項目,】,對話框。,在,【,項目類型,】,窗格中單擊,【Visual C#,項目,】,,然后單擊,【,模板,】,窗格中的,【W(wǎng)indows,應用程序,】,。,在,【,名稱,】,文本框中,輸入“,TestStreamWriter”,,然后單擊,【,確定,】,按鈕。,Visual Studio,將該項目添加到解決方案資源管理器中,,Windows,窗體設計器隨即打開。,將,表,11.1,中的控件添加到窗體中,并給其屬性設置相應的值。,(2),編寫寫入文件和讀取文件代碼。,(3),測試代碼。按,F5,鍵編譯該應用程序,在文本框

    15、中輸入的數(shù)據(jù),(,姓名和電話,),,單擊,【,添加,】,按鈕,然后單擊,【,顯示,】,按鈕,觀察程序運行結果。,圖,11.9,電話號碼簿程序,表,11.1,屬性表,11.4,二進制讀取器和寫出器,類,BinaryReader(,二進制讀取器,),用于讀取字符串和基本數(shù)據(jù)類型,類,BinaryWriter(,二進制寫出器,),用于寫入二進制文件。,任務,11.8,:學生名冊,主要知識點,;,將基本數(shù)據(jù)類型的數(shù)據(jù)以二進制數(shù)據(jù)形式寫入文件,(,寫入二進制文件,),。在文件中讀取以二進制數(shù)據(jù)保存的基本數(shù)據(jù)類型的值,(,讀取二進制文件,),。,問題描述:創(chuàng)建,如圖,11.10,所示,的應用程序,當單擊,

    16、【,添加,】,按鈕時,將文本框中輸入的數(shù)據(jù),(,姓名、年齡和平均成績,),寫入二進制文件,當單擊,【,顯示,】,按鈕時,讀二進制文件并將結果顯示在文本框中。,圖,11.10,學生名冊程序,11.5,序列化對象,序列化是將對象狀態(tài)轉換為可保持或傳輸?shù)母袷降倪^程。與序列化相對的是反序列化,它將流轉換為對象。這兩個過程結合起來,就使得數(shù)據(jù)能夠被輕松地存儲和傳輸。,可以使用,Serializable,屬性將類標記為可序列化,在可序列化的類中使用,NonSerialized,屬性標記成員變量,來防止這些成員變量被序列化。,實際上,序列化就是利用格式化程序如二進制格式化程序,BinaryFormatter,的,Serialize,方法將類的值轉換為一個一般的,(,即連續(xù)的,),字節(jié)流,然后將這個流寫到磁盤文件或任何其他流化目標上。利用利用格式化程序如,BinaryFormatter,的,Deserialize,方法,可對象還原回其以前的狀態(tài)。,任務,11.9,:序列化對象,主要知識點:聲明可序列化類。序列化對象。反序列化對象。,問題描述:創(chuàng)建一可序列化的,person,類,然后將該類的實例序列化到

    展開閱讀全文
    溫馨提示:
    1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
    2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
    3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
    4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
    5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
    6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
    7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
    關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

    copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

    備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


    本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

    欧美久久久一区二区三区,国产精品亚洲一区二区无码,亚洲国产精品综合久久20声音,亚洲国产精品无码久久久蜜芽
    <span id="plx27"><var id="plx27"></var></span>
    <dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>