我發現此代碼是爲了將文件編碼爲base64。它使用一個偏移量。有關在讀取調用中使用偏移量的說明
File filePath = new File("/sdcard/videooutput.mp4");
try{
FileInputStream fin=new FileInputStream(filePath);
long length = filePath.length();
// Create the byte array to hold the data
byte[] bytes = new byte[(int)length];
// Read in the bytes
int offset = 0;
int numRead = 0;
while (offset<bytes.length && (numRead=fin.read(bytes, offset, bytes.length-offset))>=0){
offset += numRead;
}
// Ensure all the bytes have been read in
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+filePath.getName());
}
Base64.encodeToString(bytes, Base64.DEFAULT);
我不明白這段代碼是while (offset < bytes.length && (numRead=fin.read(bytes, offset, bytes.length-offset)) >= 0)
。
任何人都可以解釋代碼試圖做什麼?我只理解它檢查偏移量是否少於字節的長度,其餘的我不確定。
我的下一個問題是,什麼是使用偏移量來編碼文件的原因?
有關這個問題的任何答案都會很有幫助。對不起,問這種類型的問題,但我真的需要了解這個代碼。
偏移量不是「用於編碼文件」,它是您讀取文件的位置的計數器。播放電腦:在紙上「執行」代碼時記下變量的值。在提供的代碼片段中沒有編碼發生,只是閱讀。 –
而不是使用'offset',你可以使用'DataInputStream' –
這不是編碼到base64。如果你想這樣做,那麼你可以使用核心'javax.xml.bind.DataConverter'或Apache Commons Codec。 – LanguagesNamedAfterCofee