Java 最佳编码方式

Java 最佳编码方式,java,file,base64,bytearray,encode,Java,File,Base64,Bytearray,Encode,我有一个字节数组,其中包含负数,我需要将其写入文件并读回字节数组 假设我有长度为128的10字节数组,包括负数 将十个数组写入同一个文件的最佳方式是什么,这样我就可以读取该文件并再次创建相同的十字节数组?我知道总有128个长度,所以这不是问题 我目前试着把它们都放在一个字符串中,用base 64编码,然后将其写入文件。然而,当我读取文件并对其进行解码时,它似乎没有正确地解释它(第一个数组正常,另一个数组不正常) 有什么想法吗?只需将它们直接写入输出流即可-无需对它们进行编码: // Or whe

我有一个字节数组,其中包含负数,我需要将其写入文件并读回字节数组

假设我有长度为128的10字节数组,包括负数

将十个数组写入同一个文件的最佳方式是什么,这样我就可以读取该文件并再次创建相同的十字节数组?我知道总有128个长度,所以这不是问题

我目前试着把它们都放在一个字符串中,用base 64编码,然后将其写入文件。然而,当我读取文件并对其进行解码时,它似乎没有正确地解释它(第一个数组正常,另一个数组不正常)


有什么想法吗?

只需将它们直接写入
输出流即可
-无需对它们进行编码:

// Or wherever you get them from
byte[][] arrays = new byte[10][128];
...

for (byte[] array : arrays) {
    outputStream.write(array);
}
然后在读取时(使用
InputStream
):

byte[][]数组=新字节[10][];
for(int i=0;i0){
int bytesRead=input.read(ret,size-byteslaining,byteslaining);
如果(字节读==-1){
抛出新IOException(“数据用完”);
}
}
返回ret;
}

请注意,您不能只对InputStream发出10个调用。读取并假设每次读取128字节。

只需将它们直接写入一个
输出流
-无需对它们进行编码:

// Or wherever you get them from
byte[][] arrays = new byte[10][128];
...

for (byte[] array : arrays) {
    outputStream.write(array);
}
然后在读取时(使用
InputStream
):

byte[][]数组=新字节[10][];
for(int i=0;i0){
int bytesRead=input.read(ret,size-byteslaining,byteslaining);
如果(字节读==-1){
抛出新IOException(“数据用完”);
}
}
返回ret;
}

请注意,您不能只调用10次
InputStream.read
并假设每次读取128字节。

向我们展示您的尝试。也许我们能修好,让我们看看你的尝试。也许我们可以修复它。不需要对它们进行编码——你确定吗?当我写它们的时候,很多负字节值都变成了“?”(63)。@BobbyBrown:只有当你试着在文本编辑器中查看它们时。你真的需要这么做吗?这是二进制数据-如果要查看文件内容,请使用二进制文件编辑器。如果它们仍然变为63,这表明数据在写出之前已经损坏了——这几乎肯定是由于在前面代码的某个地方将其转换为字符串。我的代码假设您有正确的数据开始…我一定是在行的某个地方将某些内容转换为字符串。谢谢你给我的提示,我以后会调查的。时间不早了,我需要睡觉了。不需要对它们进行编码。你确定吗?当我写它们的时候,很多负字节值都变成了“?”(63)。@BobbyBrown:只有当你试着在文本编辑器中查看它们时。你真的需要这么做吗?这是二进制数据-如果要查看文件内容,请使用二进制文件编辑器。如果它们仍然变为63,这表明数据在写出之前已经损坏了——这几乎肯定是由于在前面代码的某个地方将其转换为字符串。我的代码假设您有正确的数据开始…我一定是在行的某个地方将某些内容转换为字符串。谢谢你给我的提示,我以后会调查的。时间不早了,我得去睡觉了。