Por que o uso RandomAccessFile int como compensação
-
18-09-2019 - |
Pergunta
Eu estou escrevendo alguns implementação de ensaio de acesso a dados e eu preciso de acesso aleatório para o conteúdo do arquivo. Aqui está o código:
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rwd");
final byte b[] = IOUtils.toByteArray(source);
randomAccessFile.write(b, (int) offset, size);
onde compensados ??tem tipo longa. Por RandomAccessFile não fornece método:
public void write(byte b[], long off, int len)
?
Como substituir essa questão?
Solução
Eu acho que você está procurando o método seek
.
O deslocamento em write
é um deslocamento para a matriz. Arrays tem offsets int
. Houve propostas para "longos matrizes", mas foram estes implementado, você ainda precisa de uma sobrecarga.
arquivos mapeados em NIO tem um problema em que o MappedByteBuffer.position
equivalente por algum motivo só usa int
. Consulte CR 6347833 (9 votos).
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow