vs新版8章節(jié)課件_第1頁
vs新版8章節(jié)課件_第2頁
vs新版8章節(jié)課件_第3頁
vs新版8章節(jié)課件_第4頁
vs新版8章節(jié)課件_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第八章文件操作與管理

本章主要內(nèi)容介紹

8.1System.IO命名空間

8.2文件流類FileStream

8.3文件讀寫例子

8.4讀寫二進制文件

8.5讀寫內(nèi)存流

8.6本章小結(jié)CONTENT本章學習目標:了解System.IO命名空間掌握讀寫文本文件的方法掌握向文件讀寫二進制數(shù)據(jù)的方法掌握讀寫內(nèi)存流的方法8.1System.IO命名空間另存為.xls文件另存為.bmp文件另存為.txt文件以字節(jié)形式向磁盤寫數(shù)據(jù)通常稱為字節(jié)流。存儲在磁盤上的字節(jié)集合稱為文件8.1System.IO命名空間File類的常用方法靜態(tài)方法Move文件剪切Delete文件刪除Copy文件復制CreateText創(chuàng)建文件OpenText打開文件文本Open打開文件8.1System.IO命名空間試一試:把C:\WinNT\Win.INI文件拷貝到C:\下的代碼,怎么寫?usingSystem.IO;……privatevoidbutton1_Click(objectsender,EventArgse){stringpath=@"C:\WINDOWS\IE4ErrorLog.txt";stringtarget=@"c:\1.txt";if(!File.Exists(path)){MessageBox.Show("對不起,未發(fā)現(xiàn)路徑文件!");}else{

File.Copy(path,target);MessageBox.Show("復制成功!");}}8.1System.IO命名空間更改代碼:此次我們通過更換FileInfo類執(zhí)行同樣的動作;usingSystem.IO;……privatevoidbutton1_Click(objectsender,EventArgse){stringpath=@"C:\WINDOWS\IE4ErrorLog.txt";stringtarget=@"c:\1.txt";FileInfomyfile=newFileInfo(path);if(!myfile.Exists){MessageBox.Show("對不起,未發(fā)現(xiàn)路徑文件!");}else{

myfile.CopyTo(target);MessageBox.Show("復制成功!");}}8.1System.IO命名空間FileInfo類和File類兩者都提供對文件類似的操作File為靜態(tài)類,直接使用;FileInfo需要實例化后才能使用。從性能上考慮,如果你要多次操作文件,不管是針對相同的,還是不同的,請使用FileInfo,說白了,單打獨斗File最棒,群毆則首推FileInfo。每次通過File類調(diào)用某個方法時,都要占用一定的cpu,而FileInfo類只在創(chuàng)建FileInfo對象時執(zhí)行一次安全檢查。

8.2讀寫文本文件System.IO命名空間繼承類

靜態(tài)方法CreateText(stringFilePath)OpenText(stringFilePath)Open(stringFilePath,FileMode)Create(stringFilePath)OpenRead(stringFilePath)AppendText(stringFilePath)FileStream類File類8.2讀寫文本文件FileStream構(gòu)造函數(shù)FileStream已重寫構(gòu)造函數(shù)FileStream(stringFilePath,FileMode)FileStream(stringFilePath,FileMode,FileAccess)FileStream(stringFilePath,FileMode,FileAccess,FileShare)在構(gòu)造函數(shù)中使用的FilePath,FileMode,FileAccess,FileShare分別是指:使用指定的路徑、創(chuàng)建模式、讀/寫權(quán)限和共享權(quán)限

FileMode和FileShare,FileAccessFileModeAppendCreateCreateNewOpenOpenOrCreateTruncateFileShareNoneReadWriteReadWrite…………FileStreamfstream=newFileStream("Test.cs",FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.None);………FileAccessReadWriteReadWriteFilePath:將封裝的文件的相對路徑或絕對路徑

8.3文件讀寫例子4-1

——創(chuàng)建fileoption類文件第一步:建立CS文件,并準備填寫關(guān)于文件操作的各種方法具體代碼見下(1)第二步:建立窗體文件,樣式如下圖所示具體代碼見下(2)8.3文件讀寫例子4-2(課堂測驗)使用文件操作類文件完成左側(cè)編輯任務。8.4讀寫二進制文件要使用BinaryReader和BinaryWriter類這兩個對象都需要在FileStream上創(chuàng)建FileStreamfilestream=newFileStream(Filename,FileMode.Create);BinaryWriterobjBinaryWriter=newBinaryWriter(filestream);二進制文件讀寫對象Close()Read()ReadDecimal()ReadByte()ReadInt16()ReadInt32()ReadString()Close()Flush()Write()BinaryReaderBinaryWriter寫二進制文件案例publicbyte[]GetFileBytes(stringFilename){if(Filename=="")returnnull;try{FileStreamfileStream=newFileStream(Filename,FileMode.Open,FileAccess.Read);BinaryReaderbinaryReader=newBinaryReader(fileStream);byte[]fileBytes=binaryReader.ReadBytes((int)fileStream.Length);binaryReader.Close();fileStream.Close();returnfileBytes;}catch{returnnull;}}///<summary>//////<summary>/*********************************************************方法名:GetFileBytes**輸入?yún)?shù):Filename:文件名稱;****輸出參數(shù):**返回值:byte[]二進制流**創(chuàng)建人:錢哨**創(chuàng)建日期:08-7-9**描述:將讀取的文件轉(zhuǎn)化成為二進制流。*******************************************************////<summary>///</summary>///<paramname="Filename"></param>///<returns></returns>寫二進制文件案例publicboolWriteFileBytes(stringTargetFilename,byte[]fileBytes){boolk=true;if(TargetFilename!=""&&fileBytes.Length!=0){try{FileStreamfileStream=newFileStream(TargetFilename,FileMode.OpenOrCreate,FileAccess.Write);BinaryWriterbinaryWriter=newBinaryWriter(fileStream);binaryWriter.Write(fileBytes);binaryWriter.Flush();binaryWriter.Close();fileStream.Close();}catch{k=false;}}else{k=false;}returnk;}///<summary>//////<summary>/*********************************************************方法名:WriteFileBytes**輸入?yún)?shù):TargetFilename:目標文件名稱;****輸出參數(shù):**返回值:byte[]二進制流**創(chuàng)建人:錢哨**創(chuàng)建日期:08-7-9**描述:將讀取的文件轉(zhuǎn)化成為二進制流。*******************************************************////<summary>///</summary>///<paramname="Filename"></param>///<returns></returns>寫二進制文件案例privatevoidbutton1_Click(objectsender,EventArgse){MyFileOptionmyof=newMyFileOption();stringtargetpic=@"c:\2.jpg";stringsourcepic=@"c:\1.jpg";byte[]sourcebyte=myof.GetFileBytes(sourcepic);if(sourcebyte.Length==0){MessageBox.Show("并未從源文件讀取任何二進制流!","錯誤",MessageBoxButtons.OK,MessageBoxIcon.Warning);

}

else

{

boolk=myof.WriteFileBytes(targetpic,sourcebyte);

if(k)

{

MessageBox.Show("寫二進制流成功!","成功",MessageBoxButtons.OK,MessageBoxIcon.Warning);

}

else

{

MessageBox.Show("寫二進制流發(fā)生意外錯誤!","錯誤",MessageBoxButtons.OK,MessageBoxIcon.Warning);

}

}

}8.5讀寫內(nèi)存流抽象類MemoryStreamBufferedStream對內(nèi)存而不是對磁盤進行數(shù)據(jù)讀寫減少了對臨時緩沖區(qū)和文件的需要

對緩沖區(qū)進行數(shù)據(jù)讀寫允許操作系統(tǒng)創(chuàng)建自己的緩沖區(qū)輸入/輸出效率高且速度更快在網(wǎng)絡(luò)通訊的時候經(jīng)常會使用到Stream類BufferedStream構(gòu)造函數(shù)publicBufferedStream(StreamStName);publicBufferedStream(StreamStName,intbsize);默認緩沖區(qū)大小為4096緩沖區(qū)大小通過緩沖區(qū)交換數(shù)據(jù)2-1publicstaticvoidMain(){

Console.WriteLine(“請輸入文件名:");

stringname=Console.ReadLine();

Console.WriteLine(“請輸入備份文件名:");

stringbackup=Console.ReadLine();

if(File.Exists(name)) {

StreaminputStream=File.OpenRead(name);

StreamoutputStream=File.OpenWrite(backup);

BufferedStreambufferedInput=new BufferedStream(inputStream);

BufferedStreambufferedOutput=new BufferedStream(outputStream);Stream和

BufferedStream的實例通過緩沖區(qū)交換數(shù)據(jù)2-2 byte[]buffer=newByte[sizeBuff];

intbytesRead;

while((bytesRead=

bufferedInput.Read(buffer,0,sizeBuff))>0) {

bufferedOutput.Write(buffer,0,bytesRead); }

Console.WriteLine();

Console.WriteLine("給定備份的文件已創(chuàng)建");

bufferedOutput.Flush();

bufferedInput.Close();

bufferedOutput.Close();

}else

{

Console.WriteLine("文件不存在");

}}通過緩沖區(qū)進行讀寫刷新并關(guān)閉BufferStream示例應用程序

8-1學生詳細信息用戶界面學生文件存儲信息用戶界面//聲明變量privateFileStreamfstream;publicfrmStudentEntry()//Constructor構(gòu)造函數(shù){

InitializeComponent();

fstream=File.Create("C:\\Student.txt");}privatevoidbtnSave_Click(objectsender,System.EventArgse){//準備將文本寫入文件stringdata;data=txtFirstName.Text+""+txtLastName.Text+""+txtClass.Text;

data+=""+txtGrade.Text+"\n";Byte[]info=new

UTF8Encoding(true).GetBytes(data);//寫數(shù)據(jù)

fstream.Write(info,0,info.Length);//刷新并關(guān)閉FileStreamfstream.Flush();fstream.Close();frmStudentFileobjfrmStudentFile=newfrmStudentFile();objfrmStudentFile.Show();}將數(shù)據(jù)寫入文本文件刷新并關(guān)閉FileStream示例應用程序

8-2privatevoidfrmStudentFile_Load(objectsender,System.EventArgse){FileStreamfstream=File.OpenRea

溫馨提示

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

評論

0/150

提交評論