版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
文件操作思政目標(biāo):
?掌握文件系統(tǒng)的知識,主動獲取、查詢、檢索信息,培養(yǎng)主觀能動性
?明白文件保護的重要性,重視上網(wǎng)安全技能要求:
?了解文件系統(tǒng)相關(guān)概念和常用操作
?了解文件處理流的相關(guān)概念及常用類實踐目標(biāo):
?能夠?qū)W會創(chuàng)建文件,能夠?qū)ξ募M(jìn)行處理
?學(xué)會熟練運用Stream類對文件進(jìn)行操作第14章訪問路徑Stream類訪問01PART訪問屬性說明AvailableFreeSpace只讀屬性,用于確定驅(qū)動器上的可用空間大小DriveTypeCDRom:表示CD-ROM驅(qū)動器Fixed:表示一個不可隨意移除的固定硬盤Network:表示一個網(wǎng)絡(luò)驅(qū)動器NoRootDirectory:表示一個沒有根目錄的驅(qū)動器Ram:表示一個RAM驅(qū)動器Removable:表示一個可移除的驅(qū)動器Unknown:表示一個未知的驅(qū)動器類型DriveFormat只讀屬性,用于確定驅(qū)動器上的文件系統(tǒng)格式類型,如NTFS、FAT和FAT32Name只讀屬性,用于獲得驅(qū)動器的名稱TotalFreeSpace只讀屬性,用于確定磁盤上的總可用空間量,它沒有考慮用戶的空間配額TotalSize用于確定驅(qū)動器上的總空間量驅(qū)動器的訪問需要借助于DriveInfo類來實現(xiàn),它是密封類驅(qū)動器訪問驅(qū)動器的訪問,常用方法主要是GetDrives(),該方法用于獲得所有可用驅(qū)動器的列表訪問在執(zhí)行上面的程序時,若磁盤沒有準(zhǔn)備好,或者機器上有虛擬磁盤等,會導(dǎo)致出現(xiàn)異常,此時可以利用try-catch來檢測異常。訪問目錄的訪問需要借助于Directory類和DirectoryInfo類來實現(xiàn)。Directory類的常用方法目錄訪問方法說明CreateDirectory()創(chuàng)建一個新目錄Delete()刪除一個目錄Exists()確定目錄是否存在。如果將目錄路徑傳遞給該方法,它會返回一個bool值以表明目錄是否存在。這是Directory類中最常用的方法,并且通常和if語句配合使用GetFiles()獲取目錄中的文件的列表GetDirectories()獲取目錄中的子目錄的列表GetLogicalDrives()獲取本地計算機上的邏輯驅(qū)動器的列表GetParent()獲取指定目錄的父目錄Move()將目錄移動到另一個位置訪問DirectoryInfo類的常用屬性是Name和FullName。Name屬性獲取目錄的名稱,F(xiàn)ullName屬性獲取目錄的名稱以及完整路徑目錄訪問DirectoryInfo類的常用方法屬性說明Create()創(chuàng)建一個目錄CreateSubDirectory()為當(dāng)前目錄創(chuàng)建子目錄GetDirectories()獲取當(dāng)前目錄中的子目錄的列表GetFiles()獲取當(dāng)前目錄中的文件的列表MoveTo()將目錄移動到另一個位置Delete()刪除一個目錄下面首先看文件夾的創(chuàng)建、存在性檢測及刪除訪問文件夾下文件的遍歷是個常見應(yīng)用,比如播放器搜索指定目錄下所有mp3文件、清除系統(tǒng)垃圾文件、文件搜索等功能都離不開文件的遍歷。下面的代碼演示了如何遍歷C盤下的子文件夾及文件訪問文件的訪問需要借助于File類和FileInfo類來實現(xiàn)文件訪問File類的常用方法方法含義Create()創(chuàng)建一個文件Copy()復(fù)制一個文件Delete()刪除一個文件Exists()確定文件是否存在。需要將文件路徑傳遞給該方法,然后它將返回一個bool值以表明文件是否存在。這是File類中最常用的方法,并且通常和if語句一起使用Move()移動一個文件Replace()用另一個文件替換或改寫某個文件AppendText()創(chuàng)建StreamWriter類,將該類配置為在指定的文件中追加文本Open()以FileStream打開指定的文件,然后,可以使用FileStream類的對象將文本寫入該文件ReadAllText()打開文件,讀取文件中的所有文本,將讀取的文本存儲到字符串變量中,然后關(guān)閉該文件WriteAllText()創(chuàng)建一個新文件或改寫一個現(xiàn)有文件,將字符串變量的內(nèi)容寫入文件,然后關(guān)閉該文件ReadAllLines()打開文件,讀取文件中的所有文本,將讀取的文本存儲到字符串?dāng)?shù)組中,然后關(guān)閉該文件WriteAllLines()創(chuàng)建一個新文件或改寫一個現(xiàn)有文件,將字符串?dāng)?shù)組的內(nèi)容寫入文件,然后關(guān)閉該文件訪問FileInfo類的常用屬性有Directory、Length和Name。Directory屬性獲取包含文件的目錄,Length屬性獲取文件的大小,Name屬性獲取文件的名稱文件訪問FileInfo類的常用方法方法說明Create()創(chuàng)建一個文件AppendText()創(chuàng)建StreamWriter類以向文件追加文本Open()打開一個文件CopyTo()將文件復(fù)制到一個新文件并且可以選擇改寫任何現(xiàn)有文件Delete()刪除一個文件MoveTo()將文件移動到一個新目錄。如果新目錄中已經(jīng)存在同名文件,則將引發(fā)異常Replace()用當(dāng)前FileInfo指代的文件內(nèi)容替換作為參數(shù)傳入的文件這兩個類的使用方式與Directory和DirectoryInfo類似,只是這里是針對文件的創(chuàng)建、刪除、檢測等操作而已。此處僅給出讀寫文件的簡單演示代碼。訪問創(chuàng)建WinForm項目,在窗體上放置一個RichTextBox和兩個Button上述示例使用File類的兩個方法可以完成簡單文本文件的讀寫操作。注意上述的test.txt文件應(yīng)該保存為Unicode格式,否則會出現(xiàn)亂碼。當(dāng)然,也可以根據(jù)test.txt文件的真實編碼來讀取,只是此時應(yīng)該使用ReadAllText()方法的另外一種重載方式。假如test.txt編碼為gb2312,則讀取的代碼如圖所示。相應(yīng)地,寫文件的時候也可以選用另外一種重載形式實現(xiàn)指定的編碼存儲文件。訪問上述功能還可以通過ReadAllLines和WriteAllLines來實現(xiàn)實際的文本文件讀寫過程中,究竟是使用ReadAllText/WriteAllText還是ReadAllLines/WriteAllLines,可根據(jù)具體需求來選定(即操控的對象是文本還是數(shù)組)。路徑02PART路徑路徑的操作處理是借助于Path類來完成的路徑Path類的常用屬性屬性說明PathSeparator表示當(dāng)多個路徑字符串連接在一起時,用于分割每個文件或目錄路徑的字符;通常,當(dāng)為搜索指定了多個路徑時,使用該屬性;Windows使用的默認(rèn)字符為分號(;)InvalidPathChars表示一個數(shù)組,它包含不能用于路徑字符串的字符DirectorySeparatorChar表示用于分隔路徑字符串的目錄段的字符;Windows使用的默認(rèn)字符為反斜杠(\)VolumeSeparatorChar表示用于將驅(qū)動器盤符與字符串路徑的其余部分進(jìn)行分隔的字符;Windows使用的默認(rèn)字符為冒號(:)路徑路徑Path類的常用方法方法說明GetDirectoryName()從包括驅(qū)動器盤符或文件名的路徑中檢索目錄段GetExtension()獲取某個指定文件路徑中的文件的擴展名。例如,可以使用該方法得到要檢索的文件的類型,從而可以使用正確的應(yīng)用程序?qū)⑵浯蜷_GetFileName()獲取某個指定文件路徑中的文件名,包括擴展名GetFullPath()獲取指定文件路徑的絕對路徑,包括驅(qū)動器盤符和目錄段。如果僅向本方法傳遞文件名,則將在返回的文件名之前加上當(dāng)前目錄的驅(qū)動器盤符和目錄段GetRandomFileName()獲取一個強加密的隨機名稱,可把它用于目錄或文件的命名GetTempPath()獲取本地操作系統(tǒng)用于存儲臨時文件的目錄路徑示例路徑Stream類03PARTStream類支持在同一個流中既可以進(jìn)行同步讀寫,也可以進(jìn)行異步讀寫。該類是一個抽象類,它提供了BeginRead()、BeginWrite()、EndRead()、EndWrite()、Read()、Write()、Seek()等成員方法,協(xié)同完成對流的讀寫操作文件處理流Stream類Stream類讀寫操作由于上述方法都是虛方法,故自己設(shè)計Stream類的派生類時,應(yīng)該重載這些方法,并同時設(shè)計它們同步和異步的執(zhí)行代碼。BeginRead()、EndRead()、BeginWrite()和EndWrite()方法默認(rèn)提供了異步讀寫操作方式。Stream類還提供了ReadByte()和WriteByte()方法用于一次讀寫一個字節(jié)。它們在默認(rèn)情況下實際上是調(diào)用了Read()和Write()方法的同步操作,異步讀寫B(tài)eginRead()EndRead()BeginWrite()EndWrite()同步讀寫Read()Write()概念FileStream類可以完成文件的讀寫操作,它是一個比較“底層”的流類,故可由BinaryReader、StreamReader等進(jìn)行“包裝”后,再完成對文件的操作CanRead判斷是否可讀Length確定長度CanSeek是否可以直接訪問流中的某個位置Position確定位置CanWrite判斷是否可寫Stream類FileStream常用屬性概念FileStream類可以完成文件的讀寫操作,它是一個比較“底層”的流類,故可由BinaryReader、StreamReader等進(jìn)行“包裝”后,再完成對文件的操作CanRead判斷是否可讀Length確定長度CanSeek是否可以直接訪問流中的某個位置Position確定位置CanWrite判斷是否可寫Stream類FileStream常用屬性使用File類如File.Create(fileName)、File.OpenRead(fileName)、File.Open()和File.OpenWrite()使用FileInfo其方法同F(xiàn)ile類自身構(gòu)造函數(shù)FileStream的構(gòu)造函數(shù)Stream類FileStream對象獲取的常用方法Stream類FileMode、FileAccess和FileShare枚舉值枚舉意義典型取值FileMode定義如何打開文件Open:打開現(xiàn)有文件,不存在則引發(fā)異常OpenOrCreate:打開現(xiàn)有文件,不存在則創(chuàng)建Append:將新數(shù)據(jù)寫到現(xiàn)有文件末尾Create:創(chuàng)建文件,若已存在則刪除文件內(nèi)容CreateNew:創(chuàng)建文件,若已存在則引發(fā)異常Truncate:打開現(xiàn)有文件并刪除其內(nèi)容(不會刪除文件本身),文件指針置于0,不存在則引發(fā)異常FileAccess定義對文件進(jìn)行訪問時允許的操作Read:流可以對文件進(jìn)行讀操作Write:流可以對文件進(jìn)行寫操作ReadWrite:流可以對文件進(jìn)行讀寫操作FileShare定義在文件共享時的選項None:除當(dāng)前流,其他流不能對文件進(jìn)行操作Read:其他流可以對文件進(jìn)行讀操作Write:其他流可以對文件進(jìn)行寫操作ReadWrite:其他流可以對文件進(jìn)行讀寫操作Stream類FileStream常用方法方法說明Close()關(guān)閉操作Read()讀入操作ReadByte()一次讀一個字節(jié)Write()寫入操作WriteByte()一次寫一個字節(jié)示例Stream類FileStream的寫操作。FileStream用于寫操作時其作用在于把byteArray字節(jié)數(shù)組中的數(shù)據(jù)寫入fs流,其中fs為FileStream的實例參數(shù)說明參數(shù)說明參數(shù)1數(shù)據(jù)源頭,即為寫操作提供數(shù)據(jù)的字節(jié)數(shù)組參數(shù)2從byteArray中的第startIndex個開始寫,此前的0,1,…,startIndex-1都不會寫入。如果參數(shù)2的值大于byteArray字節(jié)數(shù)組的長度,則引發(fā)異常參數(shù)3代表寫入多少個字節(jié)。如果參數(shù)3的值大于byteArray字節(jié)數(shù)組的長度,則引發(fā)異常Write()方法的原理Stream類示例Stream類上面示例中輸出文件的內(nèi)容已經(jīng)在注釋當(dāng)中。以“fs.Write(info,5,4);”為例,從第5個索引位置開始寫,即從6開始(1的索引為0),寫4個字節(jié),故輸出為6789。從這里可以看出,F(xiàn)ileStream可以以字節(jié)數(shù)組的方式操作數(shù)據(jù),故很靈活,功能強大。示例Stream類對代碼進(jìn)行如下的修改替換代碼在上步的替換完成后示例Stream類FileStream的讀操作其作用是:將fs流中的數(shù)據(jù)讀到byteArray中,其中,fs為FileStream的實例。該方法執(zhí)行完畢,返回一個int,代表真實讀取的字節(jié)數(shù),因為待讀取的數(shù)據(jù)有可能不足一次讀取的最大量n,當(dāng)待讀取字節(jié)數(shù)據(jù)小于n時,此時number<n,否則number=n。由于每次都將從fs流當(dāng)中讀取n字節(jié)的數(shù)據(jù)存儲到byteArray中,因此,n的值應(yīng)該不大于byteArray的Length值,否則將引發(fā)異常。雖然n值可以取小于byteArray的Length值,但是一般習(xí)慣保持兩個值相等。當(dāng)n值小于byteArray的Length值時,不會引發(fā)異常,并且也基本可以正常完成讀取,但是在每次讀取的內(nèi)容后面都會有若干個“\0”,當(dāng)作為字符串顯示時,會顯示為空格。Stream類參數(shù)說明參數(shù)說明參數(shù)1讀取的數(shù)據(jù)的臨時存放區(qū),讀取流的存儲緩沖參數(shù)2把流fs中讀取的數(shù)據(jù)從byteArray的第writePos個位置寫入byteArray中參數(shù)3每次從fs中讀取的字節(jié)數(shù),但是不一定能讀到這么多字節(jié),有可能實際讀取的字節(jié)數(shù)小于該參數(shù),具體讀取量由其返回值number確定Read()方法如圖所示示例Stream類Stream類StreamReader成員說明Close()關(guān)閉StreamReader的對象和相應(yīng)的流,并且釋放與其對象相關(guān)的任何系統(tǒng)資源Peek()返回下一個可用的字符但不使用它Read()從流中讀取下一個字符ReadLine()從當(dāng)前流讀取一行字符,并且返回數(shù)據(jù)為字符串Seek()允許在文件內(nèi)移動讀/寫位置到任何地方StreamReader的常用方法Stream類StreamWriterStreamWriter的常用方法成員說明Close()關(guān)閉當(dāng)前StreamWriter的對象和相應(yīng)的流Flush()清除當(dāng)前writer的所有緩沖,導(dǎo)致任何緩沖的數(shù)據(jù)被寫入相應(yīng)的流Write()寫入流WriteLine()寫入重載參數(shù)指定的某些數(shù)據(jù),后跟行結(jié)束符示例寫數(shù)據(jù)Stream類示例文件讀取BinaryReaderBinaryWriterFileStream比較“底層”,功能強大,但操作復(fù)雜。為了方便讀寫,需要使用其它數(shù)據(jù)類型來完成與字節(jié)流的轉(zhuǎn)換。BinaryReader和BinaryWriter用于按二進(jìn)制模式讀寫文件。它們提供的一些讀
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《S管理制度方案》課件
- 《石材墻材》課件
- 二零二五年度高端產(chǎn)品庫房租賃協(xié)議3篇
- 2025年度有限責(zé)任公司拆伙協(xié)議書范本4篇
- 2025年度出差培訓(xùn)及考察項目合作協(xié)議4篇
- 2025年度拆遷安置房產(chǎn)權(quán)互換及租賃合同4篇
- 二零二五年度幼兒園食堂承包及兒童營養(yǎng)膳食合同3篇
- 二零二五年度國際勞務(wù)派遣人員勞動保護合同4篇
- 《尤金奧尼爾》課件
- 2025年科研機構(gòu)實驗耗材專項采購合同2篇
- 銳途管理人員測評試題目的
- 焊接材料-DIN-8555-標(biāo)準(zhǔn)
- 工程索賠真實案例范本
- 重癥醫(yī)學(xué)科運用PDCA循環(huán)降低ICU失禁性皮炎發(fā)生率品管圈QCC持續(xù)質(zhì)量改進(jìn)成果匯報
- 個人股權(quán)證明書
- 醫(yī)院運送工作介紹
- 重癥患者的容量管理
- 學(xué)習(xí)游戲?qū)χ行W(xué)生學(xué)業(yè)成績的影響
- 小學(xué)四年級上冊遞等式計算100題及答案
- 新版?zhèn)€人簡歷Excel表格模板共2聯(lián)
- (完整)中國象棋教案
評論
0/150
提交評論