如何在Java中读回字节?

如何在Java中读回字节?,java,string,byte,Java,String,Byte,我需要从文件中读取字节,将它们转换为字符串,对字符串执行一些操作,然后从字符串中获取字节,因此我有以下代码: byte[] bFile=readFileBytes(filePath); StringBuilder massageBuilder=new StringBuilder(); for (int i=0;i<bFile.length;i++) massageBuilder.append(bFile[i]); String x=massageBuilder.charAt(n)+""

我需要从文件中读取字节,将它们转换为字符串,对字符串执行一些操作,然后从字符串中获取字节,因此我有以下代码:

byte[] bFile=readFileBytes(filePath);
StringBuilder massageBuilder=new StringBuilder();

for (int i=0;i<bFile.length;i++) massageBuilder.append(bFile[i]);

String x=massageBuilder.charAt(n)+"";

...

byte b=x.getBytes();
byte[]bFile=readFileBytes(文件路径);
StringBuilder massageBuilder=新的StringBuilder();

对于(inti=0;i,您无法返回到原始字节,因为您正在将它们添加到字符串生成器中

举个例子:

byte[] bFile = "This is the input string".getBytes();
StringBuilder massageBuilder = new StringBuilder();

for (int i = 0; i < bFile.length; i++)
    massageBuilder.append(bFile[i]);
它们变成了一个随机的数字序列,无法区分原始字节。结果字符串中的一个或多个字符将链接到单个输入
字节
。即使您知道原始文本的字符集,由于序列不明确,您仍然会遇到问题

如果您使用某种类型的分隔符,则可能

massageBuilder.append(bFile[i]).append("-");
//84~104~105~115~32~105~115~32~116~104~101~32~105~110~112~117~116~...

在这种情况下,您可以将其拆分并重建字节数组。

那么,有什么错误吗?可以使用
.charAt(n)
的值吗?请检查您的代码示例,因为它无法编译,例如
字节b=x.getBytes();
很可能应该读取
字节[]b=x.getBytes()
之后,请澄清您的问题,例如,使用一个示例。非常有洞察力,因此[1]您可以向我展示您建议的一些示例代码吗?[2]根据我最初的方法,我可以只获取前半部分来恢复字节吗?(不使用分隔符?)如果您使用分隔符,它就像
字符串[]一样简单bytes=massageBuilder.toString().split(~);byt[]Rebuilded=new byte[bytes.length];for(int i=0;i
。不确定前半部分是什么意思,问题是当您在字符串中看到,比如说,'84',时,您不知道是生成两个还是一个字节(两者都可能有效)太好了,这就是我要找的,谢谢!
massageBuilder.append(bFile[i]).append("-");
//84~104~105~115~32~105~115~32~116~104~101~32~105~110~112~117~116~...