档案管理之操作程序.pptx

上传人:精*** 文档编号:15598267 上传时间:2023-07-06 格式:PPTX 页数:46 大小:268.87KB
下载 相关 举报
档案管理之操作程序.pptx_第1页
第1页 / 共46页
档案管理之操作程序.pptx_第2页
第2页 / 共46页
档案管理之操作程序.pptx_第3页
第3页 / 共46页
档案管理之操作程序.pptx_第4页
第4页 / 共46页
档案管理之操作程序.pptx_第5页
第5页 / 共46页
档案管理之操作程序.pptx_第6页
第6页 / 共46页
档案管理之操作程序.pptx_第7页
第7页 / 共46页
档案管理之操作程序.pptx_第8页
第8页 / 共46页
档案管理之操作程序.pptx_第9页
第9页 / 共46页
档案管理之操作程序.pptx_第10页
第10页 / 共46页
档案管理之操作程序.pptx_第11页
第11页 / 共46页
档案管理之操作程序.pptx_第12页
第12页 / 共46页
档案管理之操作程序.pptx_第13页
第13页 / 共46页
档案管理之操作程序.pptx_第14页
第14页 / 共46页
档案管理之操作程序.pptx_第15页
第15页 / 共46页
档案管理之操作程序.pptx_第16页
第16页 / 共46页
档案管理之操作程序.pptx_第17页
第17页 / 共46页
档案管理之操作程序.pptx_第18页
第18页 / 共46页
档案管理之操作程序.pptx_第19页
第19页 / 共46页
档案管理之操作程序.pptx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

档案管理之操作程序.pptx

《档案管理之操作程序.pptx》由会员分享,可在线阅读,更多相关《档案管理之操作程序.pptx(46页珍藏版)》请在冰点文库上搜索。

档案管理之操作程序.pptx

檔案管理,15.1磁碟檔案15-215.1.1什麼是檔案15-215.1.2檔案名稱15-215.1.3開啟檔案open15-315.1.4檔案是否開啟成功15-615.1.5關閉檔案close15-715.2存取文字檔15-715.2.1寫入文字檔15-1115.2.4寫入單一字元put15-1215.2.5讀取單一字元get15-13,15.3存取二進位檔15-1715.3.1寫入二進位檔write15-1715.3.2附加資料到二進位檔write15-1915.3.3讀取二進位檔read15-2215.3.4檔案結束位置eof15-2415.4隨機存取資料15-2815.4.1移動讀取指標seekg15-2915.4.2移動寫入指標seekp15-2915.4.3取得讀取指標tellg15-3215.4.4取得寫入指標tellp15-32,15.1磁碟檔案,因為結束程式或關閉電源都將使得存在記憶體中的資料消失,所以每次執行前幾章的學生資料程式或員工資料程式時,都必須重新輸入資料。

如果經常要使用這些資料,則可以在結束程式或關閉電源以前將資料存入磁碟檔案中,下次要用時再從磁碟檔案中讀取。

15.1.1什麼是檔案,在許多程式中,檔案(file)是基本的輸入與輸出物件。

檔案物件(fileobject)收集了磁碟檔案資訊,包括檔案是否存在或開啟,以及存取檔案的路徑、大小、日期、與時間等等,所以可以利用檔案物件開啟、讀取、寫入、關閉、與取得磁碟檔案的資料。

15.1.2檔案名稱,所有的檔案都有一個可讓作業系統與使用者確認的獨一無二的檔名。

每個作業系統都有它們自己的檔案命名方式,例如Windows可以接受長檔名,而MS-DOS則只接受短檔名(主檔名8個字元,副檔名3個字元)。

基本上檔名分為主檔名與副檔名,而且主檔名與副檔名中間以句點(.)隔開。

一般而言,副檔名代表檔案的種類。

15.1.2檔案名稱(續),15.1.3開啟檔案open,#includeifstream輸入物件;/建立輸入檔案物件ofstream輸出物件;/建立輸出檔案物件fstream輸出入物件;/建立輸入輸出檔案物件檔案物件.open(“檔案名稱”,ios:

開啟模式);,15.1.3開啟檔案open(續),15.1.3開啟檔案open(續),先建立檔案物件,再開啟資料檔ofstreamout;/建立輸出檔案物件ifstreamin;/建立輸入檔案物件fstreamio;/建立輸入輸出檔案物件out.open(a:

textOut.txt,ios:

out);/開啟輸出檔案in.open(a:

textIn.txt,ios:

in);/開啟輸入檔案io.open(a:

textIO.txt,ios:

in|ios:

out);/開啟輸入輸出檔案,15.1.3開啟檔案open(續),先建立檔案物件,再開啟二進位檔案ofstreamout;/建立輸出檔案物件ifstreamin;/建立輸入檔案物件fstreamio;/建立輸入輸出檔案物件out.open(textOut.txt,ios:

binary|ios:

out);/開啟二進位輸出檔案in.open(textIn.txt,ios:

binary|ios:

in);/開啟二進位輸入檔案io.open(textIO.txt,ios:

binary|ios:

in|ios:

out);/開啟二進位輸入輸出,15.1.3開啟檔案open(續),建立同時開啟資料檔案/使用ofstream的建立者函數建立物件並開啟輸出檔案ofstreamout(a:

textOut.dat,ios:

out);/使用ifstream的建立者函數建立物件並開啟輸入檔案ifstreamin(a:

textIn.dat,ios:

in);/使用fstream的建立者函數建立物件並開啟輸入輸出檔案fstreamio(a:

textIO.dat,ios:

in,ios:

out);,15.1.3開啟檔案open(續),建立同時開啟二進位檔案/使用ofstream的建立者函數建立物件並開啟輸出檔案ofstreamout(a:

textOut.dat,ios:

binary|ios:

out);/使用ifstream的建立者函數建立物件並開啟輸入檔案ifstreamin(a:

textIn.dat,ios:

binary|ios:

in);/使用fstream的建立者函數建立物件並開啟輸入輸出檔案fstreamio(a:

textIO.dat,ios:

binary|ios:

in|ios:

out);,15.1.4檔案是否開啟成功,在呼叫open函數後,必須先測試檔案是否開啟成功,然後才可正確存取檔案資料。

ifstreammyFile;/建立輸入檔案物件in.open(a:

textIn.txt,ios:

in);/開啟輸入檔案if(!

myFile)/測試檔案是否開啟成功cout開啟檔案失敗!

n;/檔案代號錯誤,15.1.4檔案是否開啟成功(續),當使用建立者函數建立檔案物件並開啟檔案時,則可用is_open()函數來判斷檔案開啟是否成功ifstreammyFile(a:

textIn.txt,ios:

in);/建立並開啟檔案if(!

myFile.is_open()/測試檔案是否開啟成功cout開啟檔案失敗!

n;/檔案代號錯誤,15.1.5關閉檔案close,#include物件名稱.close();範例myFile.close();/關閉myFile檔案物件,15.2存取文字檔,一般文字編輯軟體都是將資料存入文字檔,例如微軟的NotePad就是將文件存入.txt檔,而WordPad與Word則是將文件存入.doc檔。

所以本節將要介紹如何寫入資料至文字檔、如何附加資料到文字檔、與讀取文字檔資料等等。

15.2.1寫入文字檔,物件名稱.open(“檔案名稱”,ios:

out);/開啟檔案物件名稱輸出字串;/寫入檔案範例一ofstreamfilePtr;/建立檔案物件filePtrfilePtr.open(a:

textIO.txt,ios:

out);/開啟檔案a:

textIO.txtfilePtrLifeisnoteasy,butinthelongrunn;filePtritseasierthangoingtoelaborateendsn;filePtrtodenyit.n;/寫入字串到檔案filePtr.close();/關閉filePtr檔案物件,15.2.1寫入文字檔(續),範例二intid;/宣告整數變數charname40;/宣告C型態字串變數ofstreamoutFile;/建立檔案物件outFileoutFile.open(“a:

textIO.dat”,ios:

out);/開啟檔案a:

textIO.datcinidname;/從鍵盤讀取整數與字串outFileidtnamen;/寫入整數與字串到檔案outFile.close();/關閉outFile檔案物件,15.2.2附加資料到文字檔,物件名稱.open(“檔案名稱”,ios:

app);/開啟檔案物件名稱字串1字串2;/附加資料範例一ofstreamfilePtr;/建立檔案物件filePtrfilePtr.open(a:

outFile.txt,ios:

app);/開啟a:

outFile.txtfilePtr人生的確不是簡單的,可是老老實實地活著,n;/附加字串到檔案filePtr總要比想出千方百計的逃避人生來得簡單些。

n;/附加字串到檔案filePtr.close();,15.2.2附加資料到文字檔(續),範例二intid;/宣告整數變數charname40;/宣告C型態字串變數ofstreamoutFile;/建立檔案物件outFileoutFile.open(a:

textIO.dat,ios:

app);/開啟檔案a:

textIO.datcinidname;/從鍵盤讀取整數與字串outFileidtnamen;/寫入整數與字串到檔案outFile.close();/關閉outFile檔案物件,15.2.3讀取文字檔,物件名稱.open(“檔案名稱”,ios:

in);/開啟檔案物件名稱緩衝區1緩衝區2;/讀取資料範例ifstreamoutFile;/建立檔案物件outFileintid;/存放資料緩衝區charname40;/存放資料緩衝區範例待續,15.2.3讀取文字檔(續),outFile.open(a:

textIO.dat,ios:

in);/開啟輸入檔a:

textIO.datoutFileidname;/讀取檔案存入緩衝區while(!

outFile.eof()/是否已到檔尾coutidname;/讀取檔案存入緩衝區outFile.close();/關閉檔案物件outFile,15.2.4寫入單一字元put,物件名稱.open(“檔案名稱”,ios:

out);/開啟檔案物件名稱.put(字元緩衝區);/寫入資料範例ofstreamfilePtr;/建立檔案物件filePtrcharinData=Lifeisnoteasy,butinthelongrunnitseasierthangoingtoelaborateendsntodenyit.n;範例待續,15.2.4寫入單一字元put(續),範例續filePtr.open(a:

textIO.txt,ios:

in);/開啟輸入檔a:

textIO.txtintlen=strlen(inData);/取得inData陣列的長度for(inti=0;ilen;i+)/寫入字元迴圈filePtr.put(inDatai);/寫入字元到textIO.txtfilePtr.close();/關閉檔案物件filePtr,15.2.5讀取單一字元get,物件名稱.open(“檔案名稱”,ios:

in);/開啟檔案物件名稱.get(字元緩衝區);/讀取資料範例ifstreamfilePtr;/建立檔案物件filePtrcharinData;/存放資料緩衝區filePtr.open(a:

textIO.txt,ios:

in);/開啟輸出檔a:

textIO.txtwhile(filePtr.get(inData)/取得資料並存入緩衝區coutinData;/顯示資料filePtr.close();/關閉檔案物件filePtr,Exercise,用C+寫一個檔案複製的程式下載f1.txt寫一個程式,利用檔案讀取及檔案寫入的方式,將f1.txt複製為f2.txt,15.3存取二進位檔,雖然讀寫格式化的文字檔非常簡單,也非常適用於文件檔案的存取,但它不是最有效的檔案管理方式。

所以現在要介紹另一種的檔案管理方式:

非格式化的二進位檔。

15.3.1寫入二進位檔write,物件名稱.open(“檔案名稱”,ios:

binary);/開啟二進位檔物件名稱.write(constchar*緩衝區,寫入長度);/寫入資料範例classStudent/自定Student資料intstudent_id;charstudent_name40;public:

Student()Student_id=10;Student_name=Tom;,15.3.1寫入二進位檔write(續),範例續intmain()StudentstuData;/建立類別物件ofstreamfilePtr;/建立輸出檔案物件filePtr.open(a:

binIO.dat,ios:

binary|ios:

out);/開啟二進位檔filePtr.write(char*)/正常結束程式,15.3.2附加資料到二進位檔write,物件名稱.open(“檔案名稱”,ios:

binary|ios:

app);物件名稱.write(constchar*緩衝區,寫入長度);classStudent/自定Student資料intstudent_id;charstudent_name40;public:

setData(id,name)student_id=id;student_name=name;,15.3.2附加資料到二進位檔write(續),範例續intmain()StudentstuData;/建立類別物件ofstreamfilePtr;/建立輸出檔案物件filePtr.open(a:

binIO.dat,ios:

binary|ios:

app);/開啟二進位附加檔stuData.setData(1,Ken);/設定自定資料filePtr.write(char*)/正常結束程式,15.3.3讀取二進位檔read,物件名稱.open(“檔案名稱”,ios:

binary|ios:

in);物件名稱.read(constchar*緩衝區,讀取長度);範例classStudent/自定Student資料intstudent_id;charstudent_name40;public:

voidshowData()coutstudent_idtstudent_nameendl;,15.3.3讀取二進位檔read(續),範例續intmain()StudentstuData;/建立類別物件ifstreamfilePtr;/建立輸出檔案物件filePtr.open(a:

binIO.dat,ios:

binary|ios:

in);filePtr.read(char*)/正常結束程式,15.3.4檔案結束位置eof,輸入檔案物件.eof()範例classStudent/自定Student資料intstudent_id;charstudent_name40;public:

voidshowData()coutstudent_idtstudent_nameendl;,15.3.4檔案結束位置eof(續),範例續intmain()StudentstuData;/建立類別物件ifstreamfilePtr;/建立輸出檔案物件filePtr.open(a:

binIO.dat,ios:

binary|ios:

in);/開啟二進位附加檔filePtr.read(char*)/讀取長度=緩衝區大小,15.3.4檔案結束位置eof(續),範例續while(!

filePtr.eof()/讀取資料迴圈stuData.showdata();/呼叫顯示資料函數filePtr.read(char*)/正常結束程式,Exercise,寫一個C+程式處理影像檔下載lena1.raw用photoshop瀏覽lena1.raw寫一個程式,利用檔案讀取及檔案寫入的方式,將lena1.raw複製為lena2.raw,但請將每一個字元的值c改為(255-c),再寫入lena2.raw注意c的型態應改為unsignedchar用photoshop瀏覽lena2.raw,15.4隨機存取資料,文字檔是一個字元或一個字串為單位,而二進位檔則是以一筆資料為單位,所以二進位檔案的優點就是可以隨機存取檔案內的資料,也就是說可以任意存取二進位檔中的任何一筆資料。

15.4.1移動讀取指標seekg,輸入檔案物件.seekg(移動距離,ios:

起始位置),15.4.2移動寫入指標seekp,輸出檔案物件.seekp(移動距離,ios:

起始位置),15.4.2移動寫入指標seekp(續),15.4.2移動寫入指標seekp(續),classStudent/自定Student資料intstudent_id;charstudent_name40;public:

voidshowData()coutstudent_idtstudent_nameendl;,15.4.2移動寫入指標seekp(續),範例續intmain()StudentstuData;/建立類別物件ifstreamfilePtr;/建立輸出檔案物件filePtr.open(a:

binIO.dat,ios:

binary|ios:

in);intn;cinn;intlen=sizeof(stuData);/計算每筆資料長度intpos=(n-1)*len;/計算第n筆資料位置filePtr.seekg(pos,ios:

beg);/移動get指標filePtr.read(char*)/正常結束程式,15.4.3取得讀取指標tellg,輸入檔案物件.tellg(),15.4.4取得寫入指標tellp,輸出檔案物件.tellp(),15.4.4取得寫入指標tellp(續),範例一intmain()ifstreamfilePtr;/建立輸出檔案物件filePtr.open(a:

binIO.dat,ios:

binary|ios:

in);filePtr.seekg(0,ios:

end);/移動指標到檔尾intendpos=filePtr.tellg();/取得指標位置couta:

binIO.dat的大小=endposbytesendl;/顯示檔案大小filePtr.close();return0;/正常結束程式,15.4.4取得寫入指標tellp(續),範例二classStudentintstudent_id;charstudent_name40;intmain()ifstreamfilePtr;/建立輸出檔案物件filePtr.open(a:

binIO.dat,ios:

binary|ios:

in);/開啟二進位輸入檔filePtr.seekg(0,ios:

end);/移動指標到檔尾intendpos=filePtr.tellg();/取得檔案位元組數intn=endpos/sizeof(stuData);/除以緩衝器大小couta:

binIO.dat共有n筆資料;/顯示資料筆數filePtr.close();return0;/正常結束程式,Exercise,使用課本範例程式15-09中的classStudent將C1505.dat中的學生資料依序逐筆印出可參考課本範例程式15-09,10,11的程式內容,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2