第五章 文件和流_第1頁
第五章 文件和流_第2頁
第五章 文件和流_第3頁
第五章 文件和流_第4頁
第五章 文件和流_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

.net課程系列C#高級編程.NET方向

第二學(xué)期課程第五章文件和流Newture新程教育System.IO命名空間文件和文件夾文件讀寫本章目錄在.NETFramework中,System.IO命名空間包含允許讀寫文件和數(shù)據(jù)流的類型以及提供基本文件和目錄支持的類型。System.IO命名空間的多數(shù)類型主要用于編程操作物理目錄和文件,而另一些類型則提供了從字符串緩沖到內(nèi)存區(qū)域緩沖中讀寫數(shù)據(jù)的方法。System.IO命名空間System.IO命名空間System.IO命名空間主要類及說明:FileSystemInfo:表示任何文件系統(tǒng)對象的基類Directory:提供用于文件夾操作的靜態(tài)方法DirectoryInfo:提供用于文件夾操作的實(shí)例方法File:提供對文件操作的靜態(tài)方法FileInfo:提供對文件操作的實(shí)例方法Path:這個(gè)類包含的靜態(tài)成員可以用于處理路徑名DriveInfo:它的屬性和方法提供對指定驅(qū)動器的信息System.IO命名空間Directory類和File類:只包含靜態(tài)方法,不能被實(shí)例化。只要調(diào)用一個(gè)成員方法,提供合適文件系統(tǒng)的路徑,就可以使用這些類。如果只對文件夾或文件執(zhí)行一個(gè)操作,使用這些類就很有效,因?yàn)檫@樣可以省去實(shí)例化的系統(tǒng)開銷。DirectoryInfo類和FileInfo類:實(shí)現(xiàn)與Directory類和File類大致相同的公共方法,并擁有一些公共屬性和構(gòu)造函數(shù),使用時(shí)需要實(shí)例化這些類,之后把每個(gè)實(shí)例與特定的文件夾和文件關(guān)聯(lián)起來。如果使用同一個(gè)對象執(zhí)行多個(gè)操作,使用這些類比較有效。因?yàn)樵跇?gòu)造時(shí)他們將讀取合適文件系統(tǒng)對象的身份信息和其他信息,無論對每個(gè)對象調(diào)用了多少方法,都不需要再次讀取這些信息。文件和文件夾文件和文件夾類的屬性:CreationTime:創(chuàng)建文件或文件夾的時(shí)間DirectoryName(僅用于FileInfo):包含文件夾的完整路徑Parent(僅用于DirectoryInfo):指定子目錄的父目錄Exists:確實(shí)指定的文件是否存在Extension:文件的擴(kuò)展名,對于文件夾返回空白FullName:文件或文件夾的完整路徑名LastAccessTime:最后一次訪問文件或文件夾的時(shí)間LastWriteTime:最后一次修改文件或文件夾的時(shí)間Name:文件或文件夾的名稱Length

(僅用于FileInfo):返回文件的大小,單位byte文件和文件夾文件和文件夾類的方法:Create():創(chuàng)建給定名稱的文件夾或空文件Delete():刪除文件或文件夾MoveTo():移動或重命名文件或文件夾CopyTo():(僅用于FileInfo)復(fù)制文件GetDirectories():(僅用于DirectoryInfo)獲取所有子文件夾GetFiles():(僅用于DirectoryInfo)獲取文件夾中所有文件GetFileSystemInfos():(僅用于DirectoryInfo)獲取所有文件和文件夾對象文件和文件夾獨(dú)立實(shí)踐:文件和文件夾File類詳解:創(chuàng)建文件:File.Create(stringpath)打開文件:File.Open(String,FileMode)File.Open(String,FileMode,FileAccess)File.Open(String,FileMode,FileAccess,FileShare)文件和目錄//在指定目錄創(chuàng)建一個(gè)文件,返回一個(gè)FileStream對象FileStreamfs=File.Create("D:\\test.txt");fs.Close();FileMode枚舉:指定操作系統(tǒng)打開文件的方式CreateNew:指定操作系統(tǒng)應(yīng)創(chuàng)建新文件,如果文件已存在,則將引發(fā)IOException。Create

:指定操作系統(tǒng)應(yīng)創(chuàng)建新文件。如果文件已存在,它將被覆蓋。Open

:指定操作系統(tǒng)應(yīng)打開現(xiàn)有文件,如果該文件不存在,則引發(fā)FileNotFoundException。OpenOrCreate:指定操作系統(tǒng)應(yīng)打開文件(如果文件存在);否則,應(yīng)創(chuàng)建新文件。Truncate

:指定操作系統(tǒng)應(yīng)打開現(xiàn)有文件。文件一旦打開,就將被截?cái)酁榱阕止?jié)大小。Append

:若存在文件,則打開該文件并查找到文件尾,或者創(chuàng)建一個(gè)新文件。文件和目錄FileAccess枚舉:用于控制對文件的訪問方式Read

:對文件的讀訪問

Write

:文件的寫訪問

ReadWrite

:對文件的讀訪問和寫訪問

FileShare枚舉:包含用于控制其他FileStream對象對同一文件可以具有的訪問類型的常數(shù)None:謝絕共享當(dāng)前文件Read

:只讀Write

:只寫ReadWrite:讀寫Delete

:刪除Inheritable

:使文件句柄可由子進(jìn)程繼承文件和目錄打開文件:文件和目錄staticvoidMain(string[]args)

{FileStreamfs=File.Open("D:\\test.txt",FileMode.Append);stringstr="HelloWorld";char[]arrayChar=str.ToCharArray();byte[]arrayByte=newbyte[arrayChar.Length];for(inti=0;i<arrayChar.Length;i++){arrayByte[i]=(byte)arrayChar[i];}fs.Write(arrayByte,0,arrayByte.Length);fs.Close();

}文件和目錄staticvoidMain(string[]args)

{

File.Copy(“D:\\test.txt”,“D:\\Mytest.txt”,);//復(fù)制文件 //復(fù)制文件,如果同名是否覆蓋

File.Copy(“D:\\test.txt”,“D:\\Mytest.txt”,true); File.Delete(“D:\\test.txt”);//刪除文件

File.Move(“D:\\test.txt”,“E:\\Mytest.txt”);//移動文件 //設(shè)置文件屬性 File.SetAttributes("D:\\test.txt",FileAttributes.ReadOnly);

if(!File.Exists(("D:\\test.txt",)){ Console.WriteLine(“文件不存在");}}遍歷文件夾下所有文件:文件和目錄voidForeachDirectory(stringpath){

foreach(stringiteminDirectory.GetDirectories(path))

{ForeachDirectory(item);

//遞歸

}

foreach(variteminDirectory.GetFiles(path))

{Console.WriteLine(item);

}}文件(file)是一些具有永久存儲及特定順序的字節(jié)組成的一個(gè)有序的、具有名稱的集合。它是一種進(jìn)行數(shù)據(jù)讀寫操作的基本對象。通常情況下文件按照樹狀目錄進(jìn)行組織,每個(gè)文件都有文件名、文件所在路徑、創(chuàng)建時(shí)間、訪問權(quán)限等屬性。流(stream)是.NET操作文件的基本類,對文件的輸入和輸出操作都要用到流,數(shù)據(jù)傳輸有兩個(gè)方向:讀取流:數(shù)據(jù)從外部源傳輸?shù)匠绦蛑袑懭肓鳎簲?shù)據(jù)從程序傳輸?shù)酵獠吭次募x寫在System.IO命名空間中,與流相關(guān)的類層次結(jié)構(gòu)圖:文件讀寫Stream:是一個(gè)抽象類,支持對字節(jié)的讀寫操作,所有其它的流都必須從Stream中繼承:FileStream(文件流):使用

FileStream

類對文件系統(tǒng)上的文件進(jìn)行讀取、寫入、打開和關(guān)閉操作,特點(diǎn)是操作字節(jié)和字節(jié)數(shù)組。MemoryStream(內(nèi)存流):用于在內(nèi)存中讀取和寫入數(shù)據(jù)。BufferedStream(緩存流):為其他I/O流的讀寫操作提供一個(gè)內(nèi)部的緩沖區(qū)。使用緩沖區(qū)可以減少對操作系統(tǒng)的操作,提高I/O操作性能。流涉及三個(gè)基本操作:讀操作寫操作搜索操作文件讀寫System.IO命名空中還提供了不同的讀寫器來對流中的數(shù)據(jù)進(jìn)行操作,這些通常成對出現(xiàn),一些用于讀一些用于寫,不同類型的讀寫器分別處理文本、流、字符串和二進(jìn)制數(shù)據(jù)。這些讀寫器如下:TextReader/

TextWriter:文本數(shù)據(jù)和字符串讀寫器StringReader/

StringWriter:字符串讀寫器BinaryReader/

BinaryWriter:二進(jìn)制數(shù)據(jù)讀寫器StreamReader/StreamWriter:流讀寫器文件讀寫FileStream(文件流):FileStream類的構(gòu)造函數(shù):FileStream(string,FileMode)FileStream(string,FileMode,FileAccess)FileStream(string,FileMode,FileAccess,FileShare)FileStream有很多的方法進(jìn)行讀寫:ReadByte():從流中讀取一個(gè)字節(jié),把結(jié)果轉(zhuǎn)換為0-255之間的一個(gè)整數(shù)。如果到達(dá)流的末尾,就返回-1。Read():可以把特定數(shù)量的字節(jié)流讀入到一個(gè)數(shù)組中,返回實(shí)際讀取的字節(jié)數(shù)。WriteByte():把一個(gè)字節(jié)寫入流Write():把一個(gè)字節(jié)數(shù)組寫入流文件讀寫文件讀寫FileStreamfs=newFileStream("D:\\Mytest.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite);stringstr="喜歡你";char[]c=newchar[100];c=str.ToCharArray();//將字符串轉(zhuǎn)換為字符數(shù)組byte[]b=newbyte[100];Encodered=Encoding.UTF8.GetEncoder();//編碼ed.GetBytes(c,0,c.Length,b,0,true);//字符數(shù)組通過編碼轉(zhuǎn)換為字節(jié)數(shù)組fs.Write(b,0,b.Length);//寫入文件fs.Seek(0,SeekOrigin.Begin);//將文件流定位到文件開始處byte[]by=newbyte[100];char[]ch=newchar[100];fs.Read(by,0,100);//讀取文件Decoderde=Encoding.UTF8.GetDecoder();de.GetChars(by,0,by.Length,ch,0);//字節(jié)數(shù)組通過編碼轉(zhuǎn)換為字符數(shù)組fs.Close();//關(guān)閉流對象Console.WriteLine(ch);獨(dú)立實(shí)踐:將圖片以二進(jìn)制的方式存入數(shù)據(jù)庫,加載窗體的時(shí)候從數(shù)據(jù)庫取出二進(jìn)制數(shù)據(jù),還原成圖片顯示出來。文件讀寫StreamWriter(流寫入器):用來寫文本文件Write():將字符串寫入流WriteLine():將行結(jié)束符寫入文本流文件讀寫publicstaticvoidMain(String[]args){if(!File.Exists(“MyFile.txt”)){Console.WriteLine(“{0}不存在.",FILE_NAME);return;}

using(StreamWritersw=newStreamWriter(FILE_NAME)){sw.WriteLine(“我喜歡你!");sw.WriteLine(“我愛你!");sw.WriteLine(“我們結(jié)婚吧!");

}}StreamReader(流讀取器):用于讀文本文件ReadLine():一次讀取一行Read():讀取輸入流中的下一個(gè)字符并使該字符的位置提升一個(gè)字符,如果達(dá)到

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論