項(xiàng)目一子任務(wù)四課件_第1頁
項(xiàng)目一子任務(wù)四課件_第2頁
項(xiàng)目一子任務(wù)四課件_第3頁
項(xiàng)目一子任務(wù)四課件_第4頁
項(xiàng)目一子任務(wù)四課件_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目一子任務(wù)四2023/7/16項(xiàng)目一子任務(wù)四任務(wù)4.6學(xué)習(xí)文件操作文件操作是一個(gè)操作系統(tǒng)重要的組成部分之一,也是一個(gè)應(yīng)用程序所必須具備的功能。一個(gè)完整的應(yīng)用程序,必須具有系統(tǒng)和用戶信息交換的功能。而有效的文件操作,是實(shí)現(xiàn)信息交換的手段之一。C#提供了強(qiáng)大的文件操作的功能。使用這些功能,可以很方便的實(shí)現(xiàn)文件的存儲(chǔ)管理、對文件的讀寫等操作。常見的對文件進(jìn)行操作的方式有兩種,文本模式與二進(jìn)制模式。項(xiàng)目一子任務(wù)四文件和文件夾文件與前文介紹的數(shù)組等變量不同。變量中的數(shù)據(jù)只是在程序運(yùn)行時(shí)存在,隨著程序的終結(jié)變量的內(nèi)容也隨之丟失。而文件中的內(nèi)容可以永久的存儲(chǔ)數(shù)據(jù)到硬盤或其他設(shè)備上,這就是通常所說的持久性數(shù)據(jù)。文件的這種特性可以使我們方便的存儲(chǔ)應(yīng)用程序配置等數(shù)據(jù),以方便在程序下一次運(yùn)行時(shí)使用。.NET對文件的操作提供了方便的工具。本章的代碼實(shí)例中如無特殊說明,將會(huì)包含以下引用:usingSystem;usingSystem.IO項(xiàng)目一子任務(wù)四System.IO命名空間概述System.IO命名空間中包含了文件、目錄、路徑和流等操作相關(guān)的所有類。流與文件是既相關(guān)又有區(qū)別的兩個(gè)概念。文件是一些具有永久存儲(chǔ)及特定順序的字節(jié)組成的一個(gè)有序的、具有名稱的集合。相反,流提供一種向后備存儲(chǔ)寫入字節(jié)和從后備存儲(chǔ)讀取字節(jié)的方式,后備存儲(chǔ)包括軟盤、硬盤、內(nèi)存、網(wǎng)絡(luò)等。與讀寫文件對應(yīng)的流稱為文件流,除此之外也存在多種流,例如:網(wǎng)絡(luò)流、內(nèi)存流和磁帶流等。項(xiàng)目一子任務(wù)四4.6.1File類(P61-62)File類是文件操作中最重要和最基礎(chǔ)的一個(gè)類。這個(gè)類里提供了大量的公開方法,有42種之多,其中大部分方法為靜態(tài)方法。File類提供了用于創(chuàng)建、復(fù)制、刪除、移動(dòng)和打開文件的靜態(tài)方法,并協(xié)助創(chuàng)建FileStream對象。方法說明Copy將現(xiàn)有文件復(fù)制到新文件。Create在指定路徑中創(chuàng)建文件。Delete刪除指定的文件。如果指定的文件不存在,則不引發(fā)異常。Exists確定指定的文件是否存在。Move將指定文件移到新位置,并提供指定新文件名的選項(xiàng)。Open打開指定路徑上的FileStream。項(xiàng)目一子任務(wù)四文件夾類Directory(補(bǔ)充)方法說明CreateDirectory創(chuàng)建指定路徑中的所有目錄。Delete刪除指定的目錄。Exists確定給定路徑是否引用磁盤上的現(xiàn)有目錄。GetCurrentDirectory獲取應(yīng)用程序的當(dāng)前工作目錄。GetDirectories獲取指定目錄中子目錄的名稱。GetFiles返回指定目錄中的文件的名稱。GetLogicalDrives檢索此計(jì)算機(jī)上格式為“<驅(qū)動(dòng)器號>:\”的邏輯驅(qū)動(dòng)器的名稱。GetParent檢索指定路徑的父目錄,包括絕對路徑和相對路徑。Move將文件或目錄及其內(nèi)容移到新位置。讀者對Windows的文件管理方式應(yīng)該并不陌生,其采用的是一種樹形管理模式,文件的上層通常還存在若干層文件夾。Directory類用于創(chuàng)建、復(fù)制、移動(dòng)、重命名和刪除目錄。項(xiàng)目一子任務(wù)四文件信息類FileInfo(補(bǔ)充)屬性說明Attributes獲取或設(shè)置當(dāng)前FileSystemInfo的FileAttributes。CreationTime獲取或設(shè)置當(dāng)前FileSystemInfo對象的創(chuàng)建時(shí)間。Directory獲取父目錄的實(shí)例。DirectoryName獲取表示目錄的完整路徑的字符串。Exists獲取指示文件是否存在的值。Extension獲取表示文件擴(kuò)展名部分的字符串。FullName獲取目錄或文件的完整目錄。IsReadOnly獲取或設(shè)置確定當(dāng)前文件是否為只讀的值。Length獲取當(dāng)前文件的大小。Name獲取文件名。文件信息類FileInfo與File類不同。它雖然也提供了創(chuàng)建、復(fù)制、刪除、移動(dòng)和打開文件的方法,并且?guī)椭鷦?chuàng)建FileStream對象,但是它提供得僅僅是實(shí)例方法。因此要使用FileInfo類,必須先實(shí)例化一個(gè)FileInfo對象。項(xiàng)目一子任務(wù)四FileInfo和File類(補(bǔ)充)后者只包含靜態(tài)方法,無須實(shí)例化。 方法對比:判斷文件是否存在:Exists屬性(前者)和Exists方法(后者)創(chuàng)建文件:Creat方法刪除文件:Delete方法復(fù)制文件:CopyTo方法(前者)和Copy方法(后者)移動(dòng)文件:MoveTo方法(前者)和Move方法(后者)項(xiàng)目一子任務(wù)四文件夾信息類DirectoryInfo(補(bǔ)充)文件夾信息類DirectoryInfo與文件信息類FileInfo相似。它是一個(gè)實(shí)例類,同樣提供了Directory類中的大部分方法。同F(xiàn)ileInfo類一樣,使用DirectoryInfo類之前必須實(shí)例化一個(gè)DirectoryInfo對象。屬性說明Attributes獲取或設(shè)置當(dāng)前FileSystemInfo的FileAttributes。CreationTime獲取或設(shè)置當(dāng)前FileSystemInfo對象的創(chuàng)建時(shí)間。Exists獲取指示目錄是否存在的值。Extension獲取表示文件擴(kuò)展名部分的字符串。Name獲取此DirectoryInfo實(shí)例的名稱。Parent獲取指定子目錄的父目錄。Root獲取路徑的根部分。項(xiàng)目一子任務(wù)四DirectoryInfo和Directory類(補(bǔ)充)后者只包含靜態(tài)方法,無須實(shí)例化。 方法對比:判斷文件是否存在:Exists屬性(前者)和Exists方法(后者)創(chuàng)建文件夾:Create(前者)方法和CreateDirectory方法(后者)刪除文件夾:Delete方法移動(dòng)文件夾:MoveTo方法(前者)和Move方法(后者) 注意:上述方法要求源目錄與目標(biāo)目錄處于同一根目錄下,且兩者不能相同。此外,目標(biāo)目錄不能是已存在目錄。

項(xiàng)目一子任務(wù)四文件信息類與文件夾信息類的用法(補(bǔ)充)文件信息類FileInfo和文件夾信息類DirectoryInfo具有文件類File和文件夾類Directory的大部分功能。讀者在實(shí)際應(yīng)用中應(yīng)當(dāng)注意選擇使用不同的實(shí)現(xiàn)。File類和Directory類適合用于在對象上單一的方法調(diào)用。此種情況下靜態(tài)方法的調(diào)用在速度上效率比較高,因?yàn)榇朔N方法省去了實(shí)例化新對象的過程。FileInfo類和DirectoryInfo類適合用于對同一文件或文件夾進(jìn)行幾種操作的情況。此種情況下實(shí)例化的對象不需每次都尋找文件,只需調(diào)用該實(shí)例化的方法,比較節(jié)省時(shí)間。說明:讀者可以根據(jù)自己應(yīng)用程序的實(shí)際需求應(yīng)用不同的方法。項(xiàng)目一子任務(wù)四

FileInfo或DirectoryInfo類的屬性(補(bǔ)充)

名稱作用CreationTime獲取創(chuàng)建文件或文件夾的時(shí)間DirectoryName(僅用于FileInfo)獲取所在文件夾的完整路徑名,返回DirectoryInfo實(shí)例Parent(僅用于DirectoryInfo)獲取指定目錄的父目錄Extension獲取文件的擴(kuò)展名,對于文件夾則返回空白FullName獲取文件或文件夾的完整路徑名LastAccessTime獲取或設(shè)置最后一次訪問文件或文件夾的時(shí)間LastWriteTime獲取或設(shè)置最后一次修改文件或文件夾的時(shí)間Name獲取文件或文件夾的名稱Root(僅用于DirectoryInfo)獲取路徑的根部分Length(僅用于FileInfo)返回文件的大?。ㄒ宰止?jié)為單位)Attributes獲取或設(shè)置文件(文件夾)的屬性,其值是FileAttributes枚舉的按位組合項(xiàng)目一子任務(wù)四4.6.2文件讀寫操作——流流是.NET操作文件的基本類。.NET中對文件的輸入輸出工作都要用到流。流分為輸入流和輸出流。通常,輸入流用于將讀取數(shù)據(jù),最常見的輸入流莫過于鍵盤了。此前應(yīng)用的大部分輸入都是來源于鍵盤,其實(shí)輸入流可以來源于很多設(shè)備,本章所主要討論的輸入流形式是磁盤文件。輸出流則用于向外部目標(biāo)寫數(shù)據(jù),本章所討論的輸出流形式也僅限于磁盤文件。項(xiàng)目一子任務(wù)四流操作類介紹(補(bǔ)充).NETFramework中提供了5種常見的流操作類,用以提供文件的讀取、寫入等常見操作。類說明BinaryReader用特定的編碼將基元數(shù)據(jù)類型讀作二進(jìn)制值。BinaryWriter以二進(jìn)制形式將基元類型寫入流,并支持用特定的編碼寫入字符串。FileStream公開以文件為主的Stream,既支持同步讀寫操作,也支持異步讀寫操作。StreamReader實(shí)現(xiàn)一個(gè)TextReader,使其以一種特定的編碼從字節(jié)流中讀取字符。StreamWriter實(shí)現(xiàn)一個(gè)TextWriter,使其以一種特定的編碼向流中寫入字符。項(xiàng)目一子任務(wù)四1.文件流類FileStream(P62)FileStream類的對象表示在磁盤上指向文件的流,既支持同步讀寫操作,也支持異步讀寫操作。FileStream類的特點(diǎn)是操作字節(jié)和字節(jié)數(shù)組。這種方式不適合以字符數(shù)據(jù)構(gòu)成的文本文件等類似文件的操作,但對隨機(jī)文件操作等比較有效。FileStream類提供了對文件的低級而復(fù)雜的操作,但卻可以實(shí)現(xiàn)更多高級的功能。FileStream類的構(gòu)造函數(shù)有15種,此處僅對2種作簡要介紹。構(gòu)造函數(shù)說明FileStream(String,FileMode)使用指定的路徑和創(chuàng)建模式初始化FileStream類的新實(shí)例。FileStream(String,FileMode,FileAccess)使用指定的路徑、創(chuàng)建模式和讀/寫權(quán)限初始化FileStream類的新實(shí)例。項(xiàng)目一子任務(wù)四FileSteam類

要構(gòu)造FileSteam實(shí)例,需要以下4條信息:要訪問的文件。表示如何打開文件的模式。例如,創(chuàng)建一個(gè)新文件或打開一個(gè)現(xiàn)有的文件。如果打開一個(gè)現(xiàn)有的文件寫入操作是覆蓋文件原來的內(nèi)容,還是添加到文件的末尾?表示訪問文件的方式——是只讀、只寫,還是讀寫?共享訪問——表示是否獨(dú)占訪問文件。如果允許其他流同時(shí)訪問文件,則這些流是只讀、只寫還是讀寫文件?項(xiàng)目一子任務(wù)四FileMode、FileAccess和FileShare枚舉構(gòu)造FileSteam實(shí)例的后三個(gè)參數(shù)值分別取FileMode、FileAccess和FileShare枚舉的枚舉值。枚舉值FileModeAppend、Create、CreateNew、Open、OpenOrCreate和TruncateFileAccessRead、ReadWrite和WriteFileShareInheritable、None、Read、ReadWrite和Write示例:構(gòu)造FileSteam實(shí)例方式FileStreamfs=newFileStream("Log.txt",FileMode.Append,FileAccess.Write,FileShare.None);

對于FileMode,如果要求的模式與文件的現(xiàn)有狀態(tài)不一致,就會(huì)拋出一個(gè)異常。FileAccess和FileShare枚舉是按位標(biāo)志,所以這些值可以與C#的按位OR運(yùn)算符|合并使用。11-5項(xiàng)目一子任務(wù)四流的定位(補(bǔ)充) 利用Seek方法可以靈活定位流的當(dāng)前位置,使用它需要傳遞兩個(gè)參數(shù):偏移量和參考點(diǎn)。其中參考點(diǎn)是SeekOrigin枚舉值:Begin:指定流的開頭Current:指定流內(nèi)的當(dāng)前位置End:指定流的結(jié)尾 例如:假設(shè)文件input.txt中存放的內(nèi)容是“HelloC#2005!”(文件中不包含雙引號)FileInfofi=newFileInfo("input.txt");FileStreamfs=fi.OpenRead();//此時(shí)流當(dāng)前位置是Hfs.Seek(4,SeekOrigin.Begin);//流當(dāng)前位置是ofs.Seek(-1,SeekOrigin.Current);//流當(dāng)前位置是l(第二個(gè)l)fs.Seek(-2,SeekOrigin.End);//流當(dāng)前位置是5項(xiàng)目一子任務(wù)四流的關(guān)閉(補(bǔ)充)

使用完一個(gè)流后,就應(yīng)關(guān)閉它,如案例中代碼:

fs.Close(); 關(guān)閉流會(huì)釋放與它相關(guān)的資源,允許其他應(yīng)用程序?yàn)橥粋€(gè)文件設(shè)置流。在打開和關(guān)閉流之間,可以讀寫其中的數(shù)據(jù),F(xiàn)ileStream有許多方法可以進(jìn)行這樣的讀寫。

項(xiàng)目一子任務(wù)四流寫入類StreamWriter(補(bǔ)充)應(yīng)用FileStream類需要許多額外的數(shù)據(jù)類型轉(zhuǎn)換操作,十分影響效率。另外一種更為簡單實(shí)用的寫入方法即StreamWriter類。StreamWriter類是專門用來處理文本文件的類,可以方便的向文本文件寫入字符串。StreamWriter類允許直接將字符和字符串寫入文件。StreamWriter類的構(gòu)造方法一共有七種,此處只介紹常用的三種,如表所示。構(gòu)造函數(shù)說明StreamWriter(Stream)用UTF-8編碼及默認(rèn)緩沖區(qū)大小,為指定的流初始化StreamWriter類的一個(gè)新實(shí)例。StreamWriter(String)使用默認(rèn)編碼和緩沖區(qū)大小,為指定路徑上的指定文件初始化StreamWriter類的新實(shí)例。StreamWriter(String,Boolean)使用默認(rèn)編碼和緩沖區(qū)大小,為指定路徑上的指定文件初始化StreamWriter類的新實(shí)例。如果該文件存在,則可以將其改寫或向其追加。如果該文件不存在,則此構(gòu)造函數(shù)將創(chuàng)建一個(gè)新文件。項(xiàng)目一子任務(wù)四表:StreamWriter類的常用方法(補(bǔ)充)方法說明Close關(guān)閉當(dāng)前的StreamWriter對象和基礎(chǔ)流。Write寫入流。WriteLine寫入重載參數(shù)指定的某些數(shù)據(jù)后跟行結(jié)束符。文本文件的寫操作在對文本文件進(jìn)行寫操作時(shí),要注意文本文件不能處于打開狀態(tài),若出現(xiàn)寫操作失敗,請修改文本文件的安全屬性,即右擊文本文件→屬性→安全;項(xiàng)目一子任務(wù)四2.流讀取類StreamReader(P62-63)相對于StreamWriter類,StreamReader類提供了另一種從文件中讀取數(shù)據(jù)的方法。StreamReader類的應(yīng)用方式非常相似于StreamWriter類,StreamReader類是專門用來讀取文本文件的類。此處直接介紹StreamReader類的構(gòu)造函數(shù)。其常見構(gòu)造函數(shù)和方法如表所示。構(gòu)造函數(shù)說明StreamReader(Stream)為指定的流初始化StreamReader類的新實(shí)例。StreamReader(String)為指定的文件名初始化StreamReader類的新實(shí)例。方法說明Close關(guān)閉StreamReader對象和基礎(chǔ)流,并釋放與讀取器關(guān)聯(lián)的所有系統(tǒng)資源。Read讀取輸入流中的下一個(gè)字符或下一組字符。ReadLine從當(dāng)前流中讀取一行字符并將數(shù)據(jù)作為字符串返回。ReadToEnd從流的當(dāng)前位置到末尾讀取流。項(xiàng)目一子任務(wù)四StreamReader類該類只能執(zhí)行讀操作。一般構(gòu)造時(shí)提供兩個(gè)參數(shù):編碼格式文件名或另一個(gè)流對象例如:StreamReadersw=newStreamReader("ReadMe.txt");StreamReadersw=newStreamReader("ReadMe.txt",Encoding.UTF8);FileStreamfs=newFileStream("Log.txt",FileMode.Open,FileAccess.Read);StreamReadersr=newStreamReader(fs);項(xiàng)目一子任務(wù)四Encoding枚舉命名空間:System.Text 這個(gè)類是一個(gè)抽象基類,可以根據(jù)這個(gè)類定義許多類,其方法可獲取實(shí)際的文本編碼。它的每個(gè)屬性都返回相應(yīng)類的一個(gè)實(shí)例,可以使用的屬性包括:ASCIIUnicodeUTF7UTF8UTF32BigEndianUnicode也可通過GetEncoding方法獲得指定代碼頁的編碼。11-8項(xiàng)目一子任務(wù)四二進(jìn)制流寫入類BinaryWriter(補(bǔ)充)BinaryWriter類是除了FileStream和StreamWriter之外的另一種向文件寫入數(shù)據(jù)的方式。與之前兩種方式不同的是BinaryWriter類以二進(jìn)制形式將基元類型寫入流,并支持用特定的編碼寫入字符串。其構(gòu)造函數(shù)和方法如表所示。構(gòu)造函數(shù)說明BinaryWriter()初始化向流中寫入的BinaryWriter類的新實(shí)例。BinaryWriter(Stream)基于所提供的流,用UTF-8作為字符串編碼來初始化BinaryWriter類的新實(shí)例。BinaryWriter(Stream,Encoding)基于所提供的流和特定的字符編碼,初始化BinaryWriter類的新實(shí)例。方法說明Close關(guān)閉當(dāng)前的BinaryWriter對象和基礎(chǔ)流。Write將值寫入當(dāng)前流。11-9項(xiàng)目一子任務(wù)四二進(jìn)制流讀取類BinaryReader(補(bǔ)充)BinaryReader類是和BinaryWriter類相對應(yīng)的二進(jìn)制數(shù)據(jù)讀取類。BinaryReader類用特定的編碼將基元數(shù)據(jù)類型讀作二進(jìn)制值。其應(yīng)用方法與BinaryWriter大致相同,此處直接介紹其構(gòu)造方法。其構(gòu)造函數(shù)和方法如表所示。構(gòu)造函數(shù)說明BinaryReader(Stream)基于所提供的流,用UTF8Encoding初始化BinaryReader類的新實(shí)例。BinaryReader(Stream,Encoding)基于所提供的流和特定的字符編碼,初始化BinaryReader類的新實(shí)例。方法說明Close關(guān)閉當(dāng)前閱讀器及基礎(chǔ)流。Read從基礎(chǔ)流中讀取字符,并提升流的當(dāng)前位置。11-10項(xiàng)目一子任務(wù)四任務(wù)4.7學(xué)習(xí)Math類(P63)循環(huán)語句TEXTTEXTMath類中常用的數(shù)學(xué)運(yùn)算方法函數(shù)名用途舉例結(jié)果Abs()返回指定數(shù)字的絕對值Math.Abs(-23.36)23.36Exp()返回e的指定次冪Math.Exp(1)2.7182818Floor()返回舍去小數(shù)后的結(jié)果Math.Floor(2.68)2Log10()返回指定數(shù)字以10為底的對數(shù)Math.Log10(100)2Log()返回指定數(shù)字的對數(shù)(自然對數(shù))Math.Log(2.715)0.996948Max()返回兩個(gè)指定數(shù)字中較大的一個(gè)Math.Max(3,5)5Min()返回兩個(gè)數(shù)字中較小的一個(gè)Math.Min(3,5)3Pow()返回指定數(shù)字的指定次冪Math.Pow(2,3)8Round()對浮點(diǎn)數(shù)進(jìn)行四舍五入Math.Round(2.68)3Sign()返回表示數(shù)字符號的值。>0為1;<0為-1;=0為0Math.Sign(-34)-1Sqrt()返回指定數(shù)字的平方根Math.Sqrt(9)3項(xiàng)目一子任務(wù)四任務(wù)4.8學(xué)習(xí)String類(P64-66)循環(huán)語句TEXTTEXT

方法說明舉例Equals(stringvalue)比較兩個(gè)字符串是否相等與"=="作用一樣。返回true或fals

溫馨提示

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

最新文檔

評論

0/150

提交評論