2013-04-30 176 views
0

我正在使用BufferedWriter將特定編碼的文本寫入文件,我想在關閉文件之前以字節爲單位計算文件大小。我的計劃是使用string.getBytes(),但此方法不允許提供特定的編碼(並且我無法重寫默認編碼屬性)。我的計劃是使用string.getBytes(),但此方法不允許提供特定的編碼(並且我不能重寫默認編碼屬性)。通過BufferedWriter計算寫入文件的字節數

+0

'long fileSize = file.length();' – NINCOMPOOP 2013-04-30 13:06:25

+0

我不能,因爲文件在這個階段沒有關閉。 – yuris 2013-04-30 13:11:31

+0

好的,我的錯! – NINCOMPOOP 2013-04-30 13:12:23

回答

2

使用String#getBytes(encoding)代替

+0

大聲笑,我很愚蠢是懶惰向下滾動其他方法的intellisense彈出。幾分鐘後你會回答 - 有一個10分鐘的限制... – yuris 2013-04-30 13:09:28

0

如果你正在尋找的作品無論是否要追加與否,只是計數的一個變量,訪問不重複的數據,存儲的參考FileOutputStream的方法FileChannelgetFileChannel()。在寫入數據之前和之後,您可以撥打long position(),這些值的差異會給您寫入的字節數。

+0

其實我不需要「三角洲」,但書面數據的大小,直到一個點,基於這個我可以決定是否我應該關閉一個文件並開始一個新的。 – yuris 2013-04-30 13:17:19

+0

然後你不需要在開始時記錄這個值,而只需要獲得由'position()'返回的普通值。仍然不需要爲了計算字節而重複數據,也不需要指定兩次編碼。 – misberner 2013-04-30 13:24:09

+0

此外,position()僅在flush()後纔有效,因爲flush是在後一階段完成的,所以這是一個問題。 – yuris 2013-04-30 13:32:29

相關問題