让我们假设我刚刚使用BufferedInputStream将UTF-8编码文本文件的字节读入字节数组。我知道我可以使用下面的例程将字节转换为字符串,但是是否有一种更有效/更聪明的方法来做到这一点,而不仅仅是遍历字节并转换每个字节?

public String openFileToString(byte[] _bytes)
{
    String file_string = "";

    for(int i = 0; i < _bytes.length; i++)
    {
        file_string += (char)_bytes[i];
    }

    return file_string;    
}

当前回答

查看String的构造函数

String str = new String(bytes, StandardCharsets.UTF_8);

如果你觉得很懒,你可以使用Apache Commons IO库直接将InputStream转换为字符串:

String str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);

其他回答

Java String类有一个内置的构造函数,用于将字节数组转换为字符串。

byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};

String value = new String(byteArray, "UTF-8");

我用这种方法

String String = new String(_bytes, 0, numBytes);

查看String的构造函数

String str = new String(bytes, StandardCharsets.UTF_8);

如果你觉得很懒,你可以使用Apache Commons IO库直接将InputStream转换为字符串:

String str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);

String有一个构造函数,以字节[]和charsetname作为参数:)

你可以使用这个问题中描述的方法(特别是因为你从一个InputStream开始):读取/转换一个InputStream到一个String

特别是,如果你不想依赖于外部库,你可以尝试这个答案,它通过InputStreamReader将InputStream读入char[]缓冲区,并将其追加到StringBuilder中。