2011-03-25 45 views
4

想象一下,我正在向一個文件直接寫入1025字節的位置,並將第一個1024字節留空。如何比較空字節?

我想再次打開該文件,並從第一個字節位置搜索,檢查第一個字節爲空(有沒有真實的數據)?

+6

如果你認爲有一個名爲「空字節」神奇的事情是從數值0字節有些不同,那麼你走錯了路。 – Ingo 2011-03-25 10:45:35

回答

4

你怎麼會希望知道其中有1024個字節寫得爲零,一個文件,其中「有沒有真正的數據」文件之間的區別?

如果你想要做的是檢查的前1024個字節爲零,只是讀取數據,並以正常的方式進行比較。

3

你所謂的空字節是不一樣的Java中的空引用。空字節通常是有明確的所有位字節,即0

因此,所有你需要做的是讀一個字節,並將其與0。注意,在InputStreamread方法返回一個int和-1手段文件結尾。

0

一個java字節使用所有的值,這些值可以用它存儲在內存中的8位內存來表示,所以沒有地方留下默認的「無效」字節值,你必須自己選擇一個值(例如-1,如果你只使用正值)。如果您需要所有字節值,則可以使用較短的較大數據類型來表示無效值。

作爲替代方案,你可以在你的文件自己跟蹤空閒/未使用的區域,這樣,你必須存儲有關文件免費使用的地址信息,但你仍然可以讀取寫入的字節。