代码之家  ›  专栏  ›  技术社区  ›  Frank

如何在Java中读回一个字节?

  •  1
  • Frank  · 技术社区  · 5 年前

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

    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();
    

    但最后一步没能找回字节,怎么了,我想找回按摩师.charAt(n) “?

    1 回复  |  直到 5 年前
        1
  •  1
  •   ernest_k    5 年前

    如果您将字节添加到字符串生成器中,则无法返回原始字节。

    举个例子:

    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 ,你得到

    8410410511532105115321161041013210511011211711632115116114105110103
    

    它们变成了一个随机的数字序列,无法区分原始字节。结果字符串中的一个或多个字符将链接到单个输入 byte . 即使你知道原始文本的字符集,你仍然会有麻烦,因为模棱两可的序列。

    如果您使用某种分隔符。。。

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

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