8字节[]为字符串

假设我刚刚使用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");

要转换UTF-8数据,你不能假设字节和字符之间的1-1对应关系。 尝试这个:

String file_string = new String(bytes, "UTF-8");

(Bah。我看到我在点击“发布你的答案”按钮时会减速。)

要将整个文件作为字符串读取,请执行以下操作:

public String openFileToString(String fileName) throws IOException
{
    InputStream is = new BufferedInputStream(new FileInputStream(fileName));

    try {
        InputStreamReader rdr = new InputStreamReader(is, "UTF-8");
        StringBuilder contents = new StringBuilder();
        char[] buff = new char[4096];
        int len = rdr.read(buff);
        while (len >= 0) {
            contents.append(buff, 0, len);
        }
        return buff.toString();
    } finally {
        try {
            is.close();
        } catch (Exception e) {
            // log error in closing the file
        }
    }
}
链接地址: http://www.djcxy.com/p/13747.html

上一篇: 8 byte[] to String

下一篇: How to get my data from website so I can parse it?