線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2193
推到 Plurk!
推到 Facebook!

關於FileOpen

尚未結案
lostsuniverse
一般會員


發表:9
回覆:6
積分:3
註冊:2005-07-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-06 22:52:15 IP:218.175.xxx.xxx 未訂閱
剛學到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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-19 13:49:38 IP:59.115.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-21 19:37:13 IP:211.76.xxx.xxx 未訂閱
引言: lostsuniverse 您好: 我個人認為傷不傷硬碟的問題在現在這個年頭已經不用刻意去考慮它了,如果您很在意這個問題的話,就將讀取長度設大一點,如果檔案很大而記憶體也夠用的話,甚至可以考慮一次讀取完畢,這樣子就可以減少磁碟的 I/O 次數了。 TMemoryStream 有提供讀寫檔案的函式 ReadFromFile 與 SaveToFile,用法很簡單,例如:
// 讀取檔案內容至 dat3
dat3->LoadFromFile(OpenDialog->FileName);    // 將 dat3 內容儲存至檔案
dat3->SaveToFile(SaveDialog->FileName);
7 天天敲鍵盤 v 時時按滑鼠 8
就我所知,HDD的I/O方式並沒有太多的改變(讀取頭 碟盤) 所以有點好奇為何RedSnow會說"我個人認為傷不傷硬碟的問題在現在這個年頭已經不用刻意去考慮它了" 如果RedSnow大大方便的話可以代為解惑嗎?(雖然有點離題@@")
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-21 20:41:29 IP:61.217.xxx.xxx 未訂閱
haman 您好:    這是見仁見智的問題,所以我寫的是 "個人認為傷不傷硬碟的問題在現在這個年頭已經不用刻意去考慮它"。 這裡不方便延續這個話題,如果您有興趣討論這個話題,請移駕 "本站網友互動連絡園地" 或是 "硬體討論區" 開題,我們可以在那邊再來交換意見。 7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/09/21 20:46:29
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-21 21:30:59 IP:59.104.xxx.xxx 未訂閱
1.因為硬體技術的進步。 2.因為硬碟上就有 cache 的記憶體。 而這個講的是 hit 比。 所以如果你密集的在對同一塊做讀寫。也許只在硬碟的記憶體上動作。 也可能在作業系統的 cache 就做掉了。 3.所以現在比較不去管會不會傷。 因為你已經不是對它直接做物理性動作。 你會經過一堆的”理論”動作 之後才會去動到物理性的。 所以列為無法客觀評估的範圍。而略過。^_____________^
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-22 05:21:16 IP:211.76.xxx.xxx 未訂閱
RedSnow大大: 我了解您的意思,我只是有些疑惑,開/存檔不是都要對硬碟做讀寫的動作嗎? 既然有讀寫的動作,那麼對硬碟的壽命多少都會有影響,所以有些好奇大大您是以什麼觀點覺得不必太在意對硬碟的讀寫, 經過暗黑破壞神大大的解說,讓我注意到一個被我乎略掉的東西--cache 再回頭看看lostsuniverse大大的問題,我想大部份的讀寫動作都會被一堆cache吃掉吧? 暗黑破壞神大大: 原來如此,小弟受教了 我倒是忘了有cache的存在了@@" ==================================== 懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@
系統時間:2024-05-18 6:34:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!