假设我刚刚使用a 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;
}
Run Code Online (Sandbox Code Playgroud)
Jas*_*ols 486
查看String的构造函数
String str = new String(bytes, StandardCharsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)
如果你感到懒惰,你可以使用Apache Commons IO库直接将InputStream转换为String:
String str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)
Kas*_*han 40
Java String类有一个内置构造函数,用于将字节数组转换为字符串.
byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};
String value = new String(byteArray, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
要转换utf-8数据,您不能假设字节和字符之间的对应关系为1-1.试试这个:
String file_string = new String(bytes, "UTF-8");
Run Code Online (Sandbox Code Playgroud)
(呸.我看到我按"发布你的答案"按钮放慢了速度.)
要将整个文件作为String读取,请执行以下操作:
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
609224 次 |
最近记录: |