2013-04-22 121 views
1

如果您需要的文件是否爲文件的大小和創建日期,是否有替代方案需要使用fstat()函數?
我知道我們可以使用ftell()來獲取文件大小,但我也希望創建時間和日期。我不想使用fstat()的原因是,如果文件列表很長,則需要很長時間。fstat的其他選擇嗎?

+0

你在使用什麼操作系統? – 2013-04-22 14:37:19

+0

'fstat'也會給你一個大小,所以使用這些信息應該減少操作次數。 – 2013-04-22 14:38:50

+6

fstat需要打開文件。如果你打算打開列表中的文件,無論如何fstat是一個不錯的選擇。如果不是,則使用stat()。和。這些調用中的任何一個都可以像查找文件元數據一樣快。如果你想要的只是文件元數據。 – 2013-04-22 14:42:20

回答

3

如果文件已打開,請使用fstat,如果您只有文件名並且不在意打開文件,請使用stat。它的速度儘可能快。無論你使用什麼其他函數,內部將使用statfstat,或者至少在內核中使用其等價物。這些系統調用需要從文件系統中讀取元數據,如果這不在緩存中,它將進入磁盤並需要時間。沒有辦法繞過它。

+0

+1。如果fstat很慢,這可能是因爲目錄i節點太大。使用較小的目錄條目可以加速讀取i節點中的元數據。 – TrueY 2013-04-22 15:45:27

+0

非常感謝所有的評論。 我正在使用fstat()來訪問元數據並獲取創建時間/日期。我正在考慮只獲取大小和創建時間/日期,而不是fstat()函數返回的大結構。從答覆中,我認爲沒有其他更好的選擇。 – CatchMeIfYouTry 2013-04-22 19:57:58