我有一个大的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字符不会在两个块之间分割。运行我的代码的结果是某些行以'?'结尾,这会破坏我的输入。
解决这个问题的好方法是什么?
答案 0 :(得分:2)
如果我理解正确,你有一个大文本,用UTF-8编码,然后分成1千字节的文件。现在您想要读回文本,但是您担心编码字符可能会跨文件边界分割,并导致UTF-8解码错误。
API有点尘土飞扬,但有一个SequenceInputStream
会从一系列子流中创建一个似乎是function add() {
window.scrollTo(0, positionYTop += speed);
if (window.scrollTop < 400) {
timer();
}
}
的内容。使用InputStream
个实例的集合创建其中一个,然后创建一个FileInputStream
,将UTF-8字节流解码为应用程序的文本。