我有一个文件的字节数组字符串,并且希望每个字节减去2或类似的东西,然后再加上2.我想这样做:
byte buffer[] = new byte[(int) file.length()];
try {
in = new FileInputStream(file);
in.read(buffer);
for(int i = 0; i < buffer.length; i++){
buffer[i] = (byte) (buffer[i]-2); // and then later +2
}
}
但它不起作用。首先它像我想要的那样改变文件,但后来当我把整个事情+2时,它给了我一些奇怪的东西。
所以我想要这一切:
buffer
答案 0 :(得分:2)
您的代码中存在一些错误:
new byte[(int) file.length()];
这将导致OutOfMemoryError或文件的损坏读取in.read(buffer);
这只会读取文件的部分字节。你的档案长度是否相同?
答案 1 :(得分:1)
您需要使用in.read()
调用的返回值来确切地知道实际读入缓冲区的字节数,以及写入输出的字节数。