[英]Is protocol buffers optimized to use java nio for file IO?
我正在使用協議緩沖區,想知道是否:
mergeDelimitedFrom(FileInputStream fis)
方法是否經過優化以使用Java Nio? 我真的不喜歡去src找出...但是也許我會。 我覺得應該或可以選擇兩者都使用。 我猜不是。 如果不是,我想您需要親自分析字節並手動處理定界符?
現在對Nio API不太自信,但您不只是打電話:
getChannel()
在FileInputStream上使用nio,因此可以假設使用nio,因為將FileInputStream提供給mergeDelimitedFrom方法?
相關文章,但更多針對網絡IO:
我以為該代碼不是生成的代碼的一部分,但我想它是...
MergeDelimitedFrom調用下面的CodedInputStream.readRawVarint32:
public static int readRawVarint32(
final int firstByte, final InputStream input) throws IOException {
if ((firstByte & 0x80) == 0) {
return firstByte;
}
int result = firstByte & 0x7f;
int offset = 7;
for (; offset < 32; offset += 7) {
final int b = input.read();
if (b == -1) {
throw InvalidProtocolBufferException.truncatedMessage();
}
result |= (b & 0x7f) << offset;
if ((b & 0x80) == 0) {
return result;
}
}
// Keep reading up to 64 bits.
for (; offset < 64; offset += 7) {
final int b = input.read();
if (b == -1) {
throw InvalidProtocolBufferException.truncatedMessage();
}
if ((b & 0x80) == 0) {
return result;
}
}
throw InvalidProtocolBufferException.malformedVarint();
}
看起來像普通的舊java.io。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.