2012-04-03 17 views
2

閱讀嗨任何人都可以給我建議的效率沒有得到記錄在.dat文件的方式。 當前用於驗證記錄計數,我遍歷整個文件。然後我再一次迭代整個文件來處理記錄。所以我必須遍歷整個文件兩次(用於驗證記錄數和處理)。我很想知道是否有更好的方法避免迭代兩次,因爲記錄數接近10K。文件中的Java

+0

你創建自己的文件?如果是的話,那麼它是一種流行的(如果不是標準的)機制來將元數據(例如記錄數)存儲在文件的頂部或另一個文件中。 – 2012-04-03 12:36:45

+1

我很困惑。爲什麼你不能順序處理記錄?爲什麼你必須首先知道文件中的記錄數量? – 2012-04-03 12:38:53

+0

完全取決於.dat文件的格式。也許這些記錄是固定長度的,在這種情況下,您可以將文件的長度除以記錄的長度。正如在這裏的其他地方所建議的那樣,文件格式中常見的地方是具有包含記錄數量的標題。或者重寫你的邏輯,不要求預先記錄數量。 – 2012-04-03 13:59:03

回答

0

我建議ü嘗試以implmnt記錄計數功能,並在同一個循環處理功能..所有的u需要做的是保持記錄計數變量外循環,並增加其使用++運算符內環路並排執行功能。在while/for循環中檢查文件的結尾,一切都將落實到位。

+0

謝謝你的建議sharma。在.dat文件頭記錄第一個包含總戰績count.So我需要評估作爲標題。只有當計數是相同的,我必須處理文件否則沒有必要提到的文件是否包含儘可能多的reocrds。 – prabhakar 2012-04-04 09:05:21

+0

至於你說如果我做的,例如單環,同時處理一些10K個記錄,我發現記錄數是在這種情況下,我已經無效回滾所有我爲10K記錄進行處理,並採取了時間處理這些記錄也浪費了。 – prabhakar 2012-04-04 09:18:17

0

如果您在其他模塊創建文件(或至少可以訪問這些代碼),你可以在第一行寫總記錄,每當寫操作發生時,您需要更新總記錄

現在,在讀取文件只有一個讀將驗證記錄數,如果成功比你可以遍歷文件。

+0

.dat的標題具有記錄數。我需要驗證.dat文件是否包含與標題記錄中指定的記錄數量一樣多的記錄。驗證後,我必須逐個處理reocrds。 – prabhakar 2012-04-04 09:25:00