我有一个应用程序,每小时监听外部信息源并接收分块传输编码流的JSON数据。监听器会将每个数据块写入文件中,当整个流程完成后,另一个线程会解析该文件并提取数据。但现在,尽管我已经指定了字符集,但在写入文件时,数据以二进制格式写入。
public void writeToFile(InputStream in){
File feedFile = new File("/tmp/feed.json");
try {
FileUtils.touch(feedFile);
StringWriter writer = new StringWriter();
IOUtils.copy(in, writer, StandardCharsets.UTF_8);
FileUtils.write(feedFile, writer.toString(), StandardCharsets.UTF_8,true);
} catch (IOException e) {
logger.error(Constants.FAILED_TO_WRITE_FEED_INTO_FILE,e);
}
}
这段代码在Windows和Linux上运行良好,但在Docker容器中运行时以二进制格式编写。
Docker容器使用的是Centos7操作系统。
注:保留了原文的HTML标签。
{ "默认字符集:": "UTF-8", "默认编码:": "UTF8", "默认区域设置:": "en_US", "文件编码:": "UTF-8", "sun.jnu编码:": "UTF-8" }
- Brajesh Pant