關於FileOpen |
尚未結案
|
lostsuniverse
一般會員 發表:9 回覆:6 積分:3 註冊:2005-07-17 發送簡訊給我 |
剛學到FileOpen,所以對它的存取方式並不太清楚,
雖然知道它會自動撥一部份記憶體做緩衝,但是我用一個
dat1=FileOpen(OpenDialog->FileName,fmOpenRead);
和另一個
dat2=FileCreate(SaveDialog->FileName);
並用迴圈
FileRead(dat1,p,1000);
FileWrite(dat2,p,1000);
來把檔案複製,發現就算是100Mbyte也只要幾秒鐘
而且是讓存的位置不斷的變,並不是按照由前而後存
FileSeek(dat1,a,0);
FileSeek(dat2,a,0);
不知道這樣會不會比較傷硬碟, 另外如果要把一個
TMemoryStream* dat3
直接存到FileCreate的dat2裡要怎麼存? 發表人 - lostsuniverse 於 2005/09/06 23:53:54
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
lostsuniverse 您好: 我個人認為傷不傷硬碟的問題在現在這個年頭已經不用刻意去考慮它了,如果您很在意這個問題的話,就將讀取長度設大一點,如果檔案很大而記憶體也夠用的話,甚至可以考慮一次讀取完畢,這樣子就可以減少磁碟的 I/O 次數了。 TMemoryStream 有提供讀寫檔案的函式 ReadFromFile 與 SaveToFile,用法很簡單,例如:
// 讀取檔案內容至 dat3 dat3->LoadFromFile(OpenDialog->FileName); // 將 dat3 內容儲存至檔案 dat3->SaveToFile(SaveDialog->FileName);7 天天敲鍵盤 v 時時按滑鼠 8 |
haman
中階會員 發表:46 回覆:137 積分:56 註冊:2005-03-10 發送簡訊給我 |
引言: lostsuniverse 您好: 我個人認為傷不傷硬碟的問題在現在這個年頭已經不用刻意去考慮它了,如果您很在意這個問題的話,就將讀取長度設大一點,如果檔案很大而記憶體也夠用的話,甚至可以考慮一次讀取完畢,這樣子就可以減少磁碟的 I/O 次數了。 TMemoryStream 有提供讀寫檔案的函式 ReadFromFile 與 SaveToFile,用法很簡單,例如:就我所知,HDD的I/O方式並沒有太多的改變(讀取頭 碟盤) 所以有點好奇為何RedSnow會說"我個人認為傷不傷硬碟的問題在現在這個年頭已經不用刻意去考慮它了" 如果RedSnow大大方便的話可以代為解惑嗎?(雖然有點離題@@")// 讀取檔案內容至 dat3 dat3->LoadFromFile(OpenDialog->FileName); // 將 dat3 內容儲存至檔案 dat3->SaveToFile(SaveDialog->FileName);7 天天敲鍵盤 v 時時按滑鼠 8 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
haman
中階會員 發表:46 回覆:137 積分:56 註冊:2005-03-10 發送簡訊給我 |
RedSnow大大:
我了解您的意思,我只是有些疑惑,開/存檔不是都要對硬碟做讀寫的動作嗎?
既然有讀寫的動作,那麼對硬碟的壽命多少都會有影響,所以有些好奇大大您是以什麼觀點覺得不必太在意對硬碟的讀寫,
經過暗黑破壞神大大的解說,讓我注意到一個被我乎略掉的東西--cache
再回頭看看lostsuniverse大大的問題,我想大部份的讀寫動作都會被一堆cache吃掉吧?
暗黑破壞神大大:
原來如此,小弟受教了
我倒是忘了有cache的存在了@@" ====================================
懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |