如何将UTF-8字节块转换为charcters?

我有一个大的UTF-8输入,分为1 kB大小的块.我需要使用接受String的方法来处理它.就像是:

for (File file: inputs) {
     byte[] b = FileUtils.readFileToByteArray(file);
     String str = new String(b, "UTF-8");
     processor.process(str);
}

我的问题是我无法保证任何UTF-8字符不会在两个块之间分割.运行我的代码的结果是某些行以’?’结尾,这会破坏我的输入.

解决这个问题的好方法是什么?

最佳答案 如果我理解正确,你有一个大文本,用UTF-8编码,然后分成1千字节的文件.现在您想要读回文本,但您担心编码字符可能会跨文件边界分割,并导致UTF-8解码错误.

API有点尘土飞扬,但有一个SequenceInputStream会创建一系列子流中看似单个InputStream的东西.使用FileInputStream实例集合创建其中一个,然后创建一个InputStreamReader,将UTF-8字节流解码为应用程序的文本.

点赞