c#文件操作常用的類_第1頁(yè)
c#文件操作常用的類_第2頁(yè)
c#文件操作常用的類_第3頁(yè)
c#文件操作常用的類_第4頁(yè)
c#文件操作常用的類_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

./在.NETFramework中進(jìn)行的所有的輸入和輸出工作都要使用到流。流是串行化設(shè)備的抽象串行化設(shè)備可以以線性方式存儲(chǔ)數(shù)據(jù),并可以以同樣的方式訪問(wèn):一次訪問(wèn)—個(gè)字節(jié)。此設(shè)備可以是磁盤文件、打印機(jī)、存位置和或任何其他支持以線性方式讀寫的對(duì)象。當(dāng)向某些外部目標(biāo)寫數(shù)據(jù)時(shí),就要用到輸出流,這可以是物理磁盤文件、網(wǎng)絡(luò)位置、打印機(jī)或其他程序。常用的類:File實(shí)用類,提供許多靜態(tài)方法,用于移動(dòng)、刪除、和復(fù)制文件。Directory實(shí)用類,提供許多靜態(tài)方法,用于移動(dòng)、刪除和復(fù)制目錄。Path實(shí)用類,用于處理路徑名稱。FileInfo表示磁盤上的物理文件,具有可以處理此文件的方法,要完成對(duì)文件的讀寫工作,就必須創(chuàng)建Stream對(duì)像。DirectoryInfo表示磁盤上的物理目錄,具有可以處理此目錄的方法FileStream表示可以被寫或被讀,或二者都可的文件,此文件可以同步或異步讀和寫StreamReader從流中讀取字符數(shù)據(jù),并可通過(guò)使用FileStream被創(chuàng)建為基類。StreamWriter向流寫字符數(shù)據(jù),可通過(guò)使用FileStream被創(chuàng)建為基類。FileSystemWatcherFileSystemWatcher是用于監(jiān)控文件和目錄,并在這些位置發(fā)生變化時(shí),給出應(yīng)用程序可以捕獲的事件?!鬎ile和Directory類作為實(shí)用類,File和Directory類都提供了許多方法,用于處理文件系統(tǒng)以及其中的文件和目錄。這些是靜態(tài)方法,涉及移動(dòng)文件、查詢和更新屬性并創(chuàng)建FileStream對(duì)象。File類一些最常用的靜態(tài)方法:Copy<>將文件復(fù)制到規(guī)定的位置Create<>在規(guī)定的恢蒙洗唇ㄎ募?/FONT>Delete<>刪除文件Open<>在規(guī)定的路徑上返回FileStream對(duì)像Move<>將規(guī)定的文件移動(dòng)到新位置,可以在新位置給文件規(guī)定不同的名字Directory類的一些常用的靜態(tài)方法CreateDirectory<>創(chuàng)建具有規(guī)定路徑的目錄Delete<>刪除規(guī)定的目錄以及其中的所有文件GetDirectories<>返回表示當(dāng)前目錄之下的目錄的Directory對(duì)像的數(shù)組GetFiles<>返回在當(dāng)前目錄中的File對(duì)像的數(shù)組Move<>將規(guī)定的目錄移動(dòng)到新位置??梢栽谛挛恢脼槲募A規(guī)定一個(gè)新名稱FileInfo類FileInfo類不像File類,它沒(méi)有靜態(tài)方法,僅可用于實(shí)例化的對(duì)像。FileInfo對(duì)像表示在磁盤或網(wǎng)絡(luò)位置的文件,注意它不是流,為了讀寫文件,必須創(chuàng)建Stream對(duì)像。fileInfo類提供了下面的關(guān)于基礎(chǔ)性的文件的屬性,這些屬性可能用來(lái)更新文件。Attributes獲取或設(shè)置當(dāng)前文件的屬性CreationTime獲取當(dāng)前文件的創(chuàng)建日期和時(shí)間DirectoryName獲取文件目錄的路徑Exists判斷是否存在文件FullName檢索文件的完整路徑Length獲取文件的容量Name僅僅返回文件的名稱,而不是完整的文件位置路徑、當(dāng)在.NET代碼中規(guī)定路徑名時(shí),您可以使用絕對(duì)路徑名,也可以使用相對(duì)路行名。絕對(duì)路徑名顯式地規(guī)定文件或目錄來(lái)自于哪—個(gè)己知的位置——比如是c:驅(qū)動(dòng)器。它的—個(gè)例是C:\work\LogFile.txt。注意它淮確地定義了其位置。相對(duì)路徑名相對(duì)于應(yīng)用程序在文件系統(tǒng)上運(yùn)行的位置。通過(guò)使用相對(duì)路徑名稱,無(wú)需規(guī)定已知的驅(qū)動(dòng)器或位置;當(dāng)前的目錄就是起點(diǎn)。例如,如果應(yīng)用程序運(yùn)行在c:\DeVelopment\FileDemo目錄上<這里的應(yīng)用程序是指代碼生成后的exe文件>,并使用了相對(duì)路徑"LogFile.txt,",則該文件就位于C:\DeVelopment\FileDemo\LogFile.txt中。為了上移目錄,則使用..字符。這樣,在同一個(gè)應(yīng)用程中路徑"../test.txt"是指向應(yīng)用程序所在的目錄的上一級(jí)目錄里的文件test.txt?!鬎ileStream對(duì)象FileStream對(duì)象表示在磁盤或網(wǎng)絡(luò)路徑上指向文件的流。當(dāng)類提供向文件讀寫字節(jié)的方法時(shí),經(jīng)常使用StreamReader或StreamWriter執(zhí)行這些功能。這是因?yàn)镕ileStream類操作字節(jié)和字節(jié)數(shù)組,而Stream類操作字符數(shù)據(jù)。字符數(shù)據(jù)易于使用,但是有些操作比如隨機(jī)文件訪問(wèn),就必須由FileStream對(duì)象執(zhí)行。FileStream對(duì)象的構(gòu)造函數(shù):FileStreamaFile=newFileStream<"Log.txt",FileMode.OpenOrCreate>;FileMode枚舉具有幾種成員:Append如果文件存在,就打開文件,將文件位置移動(dòng)到文件的末尾,并創(chuàng)建一個(gè)新文件。FileMode.Append僅可以與枚舉FileAccess.Write聯(lián)合使用Create創(chuàng)建新文件;如果存在這樣的文件,就破壞它。CreateNew創(chuàng)建新文件,但是如果已經(jīng)存在此文件,則拋出異常Open打開現(xiàn)有的文件,但是不存在所指定的文件,則拋出異常OpenOrCreate如果文件存在,則規(guī)定打開文件,否則就創(chuàng)建新文件,如果文件已經(jīng)存在,則保留在文件中的數(shù)據(jù)Truncate打開現(xiàn)有文件,清除其容,然后我們可以向文件寫入全新的數(shù)據(jù),但是保留文件的初始創(chuàng)建日期,必須存在有文件,否則就拋出異常訪問(wèn)級(jí)別前面的構(gòu)造函數(shù)默認(rèn)以只讀模式打開文件,需要一個(gè)附加參數(shù)規(guī)定不同的訪問(wèn)級(jí)別,此參數(shù)是FileAccess參數(shù)。FileStreamaFile=newFileStream〔"Log.txt",fileMode.OpenOrCreate,FileAccess.WriteFileAccess枚舉有三種類型:Read、Write、ReadWrite.此屬性的作用是:基于用戶的身份驗(yàn)證級(jí)別改變用戶對(duì)文件的訪問(wèn)讀取文件的位置用seek:publiclongSeek〔longoffset,SeekOriginoriginLongoffset是規(guī)定文件指針以字節(jié)為單位的移動(dòng)距離;SeekOriginorigin是規(guī)定開始計(jì)算的起始位置,此枚舉包含3個(gè)值:Begin,Current和End。例:aFile.Seek<8,SeekOrigin.Begin>;//SeekOrigin.Begin指得是文件指針從文件的第一個(gè)字節(jié)起;而參數(shù)‘8‘指得是移動(dòng)到文件的第8個(gè)字節(jié)例2:afile.Seek<2,SeekOrigin.Current>//在當(dāng)前位置開始,再移動(dòng)2個(gè)字節(jié)。例3:aFile.Seek<-5,SeekOrigin.End>//在文件末端位置開始,倒數(shù)5個(gè)字節(jié)。讀取數(shù)據(jù)使用FileStream類讀取數(shù)據(jù)不像使用StreamReader和StreamWriter類讀取數(shù)據(jù)那么容易,這是因?yàn)镕ileStream類只能處理原始字節(jié)〔rawbyey,這使得FileStream類可以用于任何數(shù)據(jù)文件,而不僅僅是文本文件,通過(guò)讀取字節(jié)數(shù)據(jù)就可以讀取類似圖像和聲音的文件。這種靈活性的代價(jià)是不能使用它直接讀入字符串,而使用StreamWriter和StreaMeader類卻可以這樣處理,從是有幾種轉(zhuǎn)換類可以很容易地將字節(jié)數(shù)組轉(zhuǎn)換為字符數(shù)組,或者進(jìn)行相反的操作。Read〔方法是從FileStream對(duì)象所指向的文件訪問(wèn)數(shù)據(jù)的主要手段:PRead〔byte[]array,intoffset,intcount//第一個(gè)參數(shù)是被傳輸進(jìn)來(lái)的字節(jié)數(shù)組,用以接受FileStream對(duì)象中的數(shù)據(jù)。第二個(gè)參數(shù)是字節(jié)數(shù)組中開始寫入數(shù)據(jù)的位置,它通常是0,表示從數(shù)組的開端的文件中向數(shù)組寫數(shù)據(jù),最后一個(gè)參數(shù)是規(guī)定從文件中讀出多少字節(jié)。寫入數(shù)據(jù)寫入數(shù)據(jù)的流程是先獲取字節(jié)數(shù)組,再把字節(jié)數(shù)據(jù)轉(zhuǎn)換為字符數(shù)組,然后把這個(gè)字符數(shù)組用Write〔方法寫入到文件中,當(dāng)然在寫入的過(guò)程中,可以確定在文件的什么位置寫入,寫多少字符等等。文件讀寫的例:讀取文件usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespacemyFile{classProgram{staticvoidMain<string[]args>{byte[]byData=newbyte[100];//建立一個(gè)FileStream要用的字節(jié)組char[]charData=newchar[100];//建立一個(gè)字符組try{FileStreamaFile=newFileStream<"../../../../Data.txt",FileMode.Open>;//實(shí)例化一個(gè)FileStream對(duì)象,用來(lái)操作data.txt文件,操作類型是aFile.Seek<55,SeekOrigin.Begin>;//把文件指針指向,從文件開始位置向前55位字節(jié)所指的字節(jié)aFile.Read<byData,0,100>;//讀取FileStream對(duì)象所指的文件到字節(jié)數(shù)組里}catch<IOExceptione>{Console.WriteLine<"close">;return;}Decoderd=Encoding.UTF8.GetDecoder<>;//d.GetChars<byData,0,byData.Length,charData,0>;//將編碼字節(jié)數(shù)組轉(zhuǎn)換為字符數(shù)組Console.WriteLine<charData>;Console.ReadLine<>;return;}}}寫入文件:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespacemyFile{classProgram{staticvoidMain<string[]args>{byte[]byData=newbyte[100];//建立一個(gè)FileStream要用的字節(jié)組char[]charData=newchar[100];//建立一個(gè)字符組try{FileStreamaFile=newFileStream<"../../../../Data.txt",FileMode.Open>;//實(shí)例化一個(gè)FileStream對(duì)象,用來(lái)操作data.txt文件,操作類型是charData="我是誰(shuí)?111?".ToCharArray<>;//將字符串的字符復(fù)制到字符組里aFile.Seek<0,SeekOrigin.End>;Encoderel=Encoding.UTF8.GetEncoder<>;//編碼器el.GetBytes<charData,0,charData.Length,byData,0,true>;aFile.Write<byData,0,byData.Length>;}catch<IOExceptione>{Console.WriteLine<"close">;return;}}}}◆StreamWriter對(duì)像用FileWriter來(lái)隨機(jī)讀取文件是個(gè)好主意,而用StreamWriter可以直接把字符串寫入文件中,它處理重要的轉(zhuǎn)換和向FileStream對(duì)像寫入工作。創(chuàng)建StreamWriter有很多方法:FileStreamaFile=newFileStream<"Log.txt",FileMode.CreatcNew>;StreamWritersw=newStreamWriter<aFile>;也可直接從文件中創(chuàng)建StreamWriter對(duì)象:StreamWritersw=newStreamWriter<"Log.txt",true>;后面這個(gè)Boolean值規(guī)定是附加文件還是創(chuàng)建新文件,如果此值為false,則就創(chuàng)建一個(gè)新文件,或者截取現(xiàn)有文件并打開它。如果此值設(shè)置為true,則打開文件,保留原來(lái)的數(shù)據(jù),如果找不到文件,則創(chuàng)建一個(gè)新文件。注意:當(dāng)創(chuàng)建FileStream對(duì)象時(shí),您無(wú)法得到選項(xiàng)的圍。除了使用Boolean值附加或創(chuàng)建新文件外,我們根本就無(wú)法像使用FileStream類時(shí)那樣規(guī)定FileMode屬性;而且,您也無(wú)法設(shè)置FileAccess屬性.因此您總是具有對(duì)文件的讀寫特權(quán),為了使用任何高級(jí)參數(shù),您必須在FileStream構(gòu)造函數(shù)中規(guī)定這些參數(shù),然后在FileStream對(duì)象中創(chuàng)建StreamWriter。例:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespaceStreamWriterFile{classProgram{staticvoidMain<string[]args>{try{FileStreamaFile=newFileStream<"data1.txt",FileMode.OpenOrCreate>;//建立一個(gè)fileStream對(duì)象StreamWritersw=newStreamWriter<aFile>;//用FileStream對(duì)像實(shí)例一個(gè)StreamWriter對(duì)象sw.Write<"first.">;sw.WriteLine<"helloworld!!!">;//寫入字符串,方法WriteLine寫入時(shí)后面跟一個(gè)換行符sw.Write<"Thisisa">;//寫入字符串,方法Write寫入時(shí)沒(méi)有換行符sw.Write<"stringofcharacters.">;sw.Close<>;//用完后必須關(guān)閉對(duì)像}catch<IOExceptione>{Console.WriteLine<e.ToString<>>;}}}}◆StreamReader對(duì)象1.讀取文件輸入流用于從外部源讀取數(shù)據(jù),在很多情況下,數(shù)據(jù)源可以是磁盤上的文件或網(wǎng)絡(luò)的某些位置,任何可能發(fā)送數(shù)據(jù)的位置都可以是數(shù)據(jù)源,比如網(wǎng)絡(luò)應(yīng)用程序,web服務(wù),甚至是控制臺(tái)。StreamReader是一個(gè)通用類,可以用于任何流;StreamReader對(duì)象的創(chuàng)建方式非常類似于StreamWriter對(duì)象的創(chuàng)建方式。StreamWriter類有兩個(gè)基本的方法read和readLineRead〔方法將流的下一個(gè)字符作為正整數(shù)值返回,如果到達(dá)了流的結(jié)尾處,則返回-1ReadLing〔方法是讀取并返回一行字符,如果返回為空,那么就是到達(dá)了流的結(jié)尾。ReadEnd〔方法讀小文件最好,它直接讀取完整的文件并作為字符串返回。例:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;namespaceStreamReaderTest{classProgram{staticvoidMain<string[]args>{stringstrLine;try{Console.Write<"請(qǐng)輸入文件路徑及文件名:">;stringmess=Console.ReadLine<>;FileStreamaFile=newFileStream<mess,FileMode.Open>;StreamReadersr=newStreamReader<aFile>;//用FileStream對(duì)象實(shí)例化一個(gè)StreamReader對(duì)象//strLine=sr.ReadToEnd<>;//讀取完整的文件,如果用這個(gè)方法,就可以不用下面的while循環(huán)strLine=sr.ReadLine<>;//讀取一行字符并返回while<strLine!=null>{Console.WriteLine<strLine>;strLine=sr.ReadLine<>;}sr.Close<>;Console.ReadLine<>;}catch<IOExceptione>{Console.WriteLine<"anIOexceptionhasbeenthrown!">;Console.WriteLine<e.ToString<>>;return;}return;}}}2.分隔文件讀取使用逗號(hào)分隔的文件,string類

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論