delphi中用於讀寫(i/o)的三種檔案型別
一.舊pascal檔案型別
用舊檔案變數表示的檔案型別,比如 f:text,f:file. 定義了三類:有型別,無型別,字元型別以及一些delphi的檔案操作函式.比如:assignprn,writeln,這些檔案類和windows檔案控制代碼不相容
二.windows檔案控制代碼(handle)
物件導向的pascal的檔案控制代碼封裝了windows檔案控制代碼型別,檔案操作函式庫則封裝了windows api函式,比如"fileread"就是呼叫了windows api 函式"readfile",delphi提供了乙個windows api操作介面如果熟悉windows api,可以用windows檔案句進行檔案操作.
三.檔案流(file streams)
檔案流是tfilestream類的物件例項,檔案流是高層的檔案操作型別,tfilestream提供了乙個控制代碼屬性.用此屬性可操作windows檔案控制代碼型別.
如何選擇檔案型別
windows檔案控制代碼是較底層的檔案操作型別,提供了靈活的同步及非同步檔案讀寫控制,以下提供用windows檔案控制代碼型別對檔案同步及非同步操作的偽**描述:
同步操作:
bresult = readfile(hfile, &inbuffer, nbytestoread, &nbytesread, null) ;
// check for eof
if (bresult && nbytesread == 0, )
&nbytesread, false) ;
// if there was a problem ...
if (!bresult)
// deal with other error cases
} }
} // end case
// deal with other error cases
} // end switch
} // end if
雖然windows檔案控制代碼提供靈活的檔案控制,但須編寫更多的出錯處理**,如果對
windowsapi不熟悉,使用delphi推薦的舊檔案變數型別.
delphi的舊檔案型別使用assignfile,使檔案變數和物理檔案關聯,通過delphi定義的
對檔案變數的各種操作,完成檔案的訪問和操作.使用方便.以下提供對檔案變數類
型的操作**描述:
var
f: textfile;
s: string;
begin
if opendialog1.execute then
begin
assignfile(f, opendialog1.filename);
reset(f);
readln(f, s);
edit1.text := s;
closefile(f);
end;
end;
檔案流是流(stream classes)的子類,所以使用他的乙個優點就是能自動繼承其父類的屬性他能很容易的和其他的流類互操作,比如你如果想把一塊動態記憶體塊寫入磁碟,可以使用乙個tfilestream和乙個tmemorystream來完成.
IO流的讀寫
測試了一些用普通的bufferreader讀太慢了,還是用位元組陣列輸出流比較快,測試nio比它還慢幾十毫秒如果讀寫8m的txt檔案示例 string newpath long start system.currenttimemillis mapmap xmlreader.viewxml file ...
io流的讀寫
所有的檔案,或資料夾 都用該類表示。file file new file c down a.txt 或 file file new file c down a.txt file 就表示a.txt檔案。可以用file來呼叫響應的方法。file.exists 判斷檔案或問價夾是否存在 file.crea...
註解中用於 target的方法annotation
target target說明了annotation所修飾的物件範圍 annotation可被用於 packages types 類 介面 列舉 annotation型別 型別成員 方法 構造方法 成員變數 列舉值 方法引數和本地變數 如迴圈變數 catch引數 在annotation型別的宣告中使...