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