2012-02-04 78 views
0

This question讓我搜索還可以從文件中獲得什麼,而無需遍歷其內容(即不需要使用ifstream或getc等輸入內容)。從文件中獲取信息而不遍歷其內容

除了文件大小和字符數,還可以收集哪些其他信息?我搜索了fseek,我發現我可以使用SEEK_SET,SEEK_CURSEEK_END,這隻允許我查找文件的結尾,文件的起始位置和當前指針。

爲了使它成爲一個問題,我特別想問:

  1. 一些文字或文字的類型可以出現(新行等)來算的?
  2. 其內容可以與某個模板匹配嗎?
  3. 使用這些方法比多次讀取文件更快嗎?

我在問微軟Windows,而不是Linux。

+0

模板化的數據就是爲什麼你有.doc,.xml,.ps,...等 – L7ColWinters 2012-02-04 13:04:31

+0

如果你知道你想要什麼信息,並且文件沒有改變,你永遠不必*多次讀取一個文件。 – 2012-02-04 13:19:54

回答

3

1),因爲在不可預測的條件下搜索某些內容需要對內容進行徹底檢查。閱讀正在閱讀。當然,你可能會收集一些統計數據,但是你需要不少於一次地遍歷你的數據。您可以使用其他應用程序隱式執行此操作,但它們也會從開始到結束遍歷文件。您可以通過某種方式來創建文件,以最少量的讀取操作獲取必要的信息,但它完全取決於您的任務,並且沒有一般方法(因爲任何generiosuty來檢查整個源結構)。

2)亦(見上文)

3)。在存儲器中儘可能多地存儲(或由任務所需)(稱爲緩存)。例如,使用映射(參見用於Windows的MapViewOfFile和用於* nix系統的mmap(2)),它使用一些系統內緩存機制。

3
  1. 沒有
  2. 沒有
  3. 取決於羯羊有實際需要多次讀取文件。

這裏沒有奇蹟。前一個問題有一個「快捷方式」,因爲文件中的字符數等於它的字節數(更嚴格的說 - ansi-text文件被認爲是一個字符序列,每個字節用一個字節表示)。

2

stat structure包含有關該文件的信息,包括權限,所有權,大小,訪問權限和創建日期信息。至於元數據,也許有一個API綁定到Windows搜索數據庫中,可能允許搜索其他條件,如內容屬性(我通常是一名Linux人,所以我不知道Windows在這方面提供了什麼)。