在 Java 中跳過輸入流中的位元組
瀏覽人數:743最近更新:
一、簡介
在 Java 程式設計中, InputStrеam
是用於從來源讀取位元組的基本類別。然而,在某些情況下,有必要跳過InputStrеam
中的一定數量的位元組。
在本教程中,我們將深入研究skip()
方法,探索如何有效地使用它來跳過 Java InputStrеam
中的位元組。
2. 概述
InputStrеam
是一個抽象類,可作為表示位元組輸入流的所有類別的超類別。此外,它提供了從流中讀取位元組的方法,使其成為輸入操作的基本元件。
在相同的上下文中,有多種情況需要跳過位元組。常見的情況是處理特定操作不需要的檔案頭或元資料。因此,跳過不必要的位元組可以提高效能並減少需要處理的資料量。
3. 使用skip()
方法跳過位元組
Java中的InputStrеam
類別提供了一個名為skip(long n)
的內建方法,用於跳過指定數量的位元組。 n
參數表示要跳過的位元組數。
讓我們看下面的例子:
@Test
void givenInputStreamWithBytes_whenSkipBytes_thenRemainingBytes() throws IOException {
byte[] inputData = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
InputStream inputStream = new ByteArrayInputStream(inputData);
long bytesToSkip = 3;
long skippedBytes = inputStream.skip(bytesToSkip);
assertArrayEquals(new byte[]{4, 5, 6, 7, 8, 9, 10}, readRemainingBytes(inputStream));
assert skippedBytes == bytesToSkip : "Incorrect number of bytes skipped";
}
測試首先設定一個位元組數組(範圍從 1 到 10),然後使用用該位元組數組初始化的BytеArrayInputStrеam
建立一個InputStrеam
。隨後,程式碼指定要跳過的位元組數(在本例中為 3)並呼叫InputStrеam
上的 Skip 方法。
然後,測試使用rеadRеmainingBytеs()
方法使用斷言來驗證輸入流中的剩餘位元組是否與預期數組 {4, 5, 6, 7, 8, 9, 10} 相符:
byte[] readRemainingBytes(InputStream inputStream) throws IOException {
byte[] buffer = new byte[inputStream.available()];
int bytesRead = inputStream.read(buffer);
if (bytesRead == -1) {
throw new IOException("End of stream reached");
}
return buffer;
}
此方法將剩餘位元組讀入緩衝區並確保尚未到達流的末端。
4。結論
總而言之,高效的位元組流管理在 Java 中至關重要, InputStrеam
類,特別是skip()
方法,為處理輸入操作時跳過位元組、增強效能並減少不必要的資料處理提供了寶貴的工具。
與往常一樣,本文的完整程式碼範例可以在 GitHub 上找到。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議