当前位置: 首页 > 知识库问答 >
问题:

Java-读取、处理和写入UTF-8文件

狄飞鹏
2023-03-14
in = Paths.get( <filename1> );
out = Paths.get( <filename2> );

Files.deleteIfExists( out );
Files.createFile( out );

CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder();
decoder.onMalformedInput( CodingErrorAction.IGNORE );
decoder.onUnmappableCharacter( CodingErrorAction.IGNORE );

BufferedReader reader = new BufferedReader( 
    new InputStreamReader(
        new FileInputStream( this.in.toFile() ), decoder ) );

CharsetEncoder encoder = StandardCharsets.UTF_8.newEncoder();
encoder.onMalformedInput( CodingErrorAction.IGNORE );
encoder.onUnmappableCharacter( CodingErrorAction.IGNORE );

BufferedWriter writer = new BufferedWriter( 
    new OutputStreamWriter(
        new FileOutputStream( this.out.toFile() ), encoder) );

char[] charBuffer = new char[100];
int readCharCount;
StringBuffer buffer = new StringBuffer();

while( ( readCharCount = reader.read( charBuffer ) ) > 0 )
{
    buffer.append( charBuffer, 0, readCharCount );
    //here goes more code to process the content
    //buffer must be written to output on each iteration
}

writer.write( buffer.toString() );
reader.close();
writer.close();
byte[] bytesf1 = Files.readAllBytes( Paths.get( <filename1> ) );
byte[] bytesf2 = Files.readAllBytes( Paths.get( <filename2> ) );
assertTrue( bytesf1.equals( bytesf2 ) ); 

除非我能在确保输入文件是用UTF-8编码后使测试工作,否则什么是基本错误,我真正感兴趣的问题是:

上面的方法是否保证了UTF-8文件中的缺陷也被逐个复制,或者将字符加载到StringBuffer的过程是否改变了这一点?

共有1个答案

吴品
2023-03-14

Java数组不实现基于值的equals。这将永远失败:

assertTrue( bytesf1.equals( bytesf2 ) ); 

考虑:

assertArrayEquals(bytesf1, bytesf2);

assertTrue(Arrays.equals(bytesf1, bytesf2));
 类似资料:
  • 本文向大家介绍Lua读取和写入文件处理例子,包括了Lua读取和写入文件处理例子的使用技巧和注意事项,需要的朋友参考一下 一、文件读存: 二、非循环表格处理:

  • 问题内容: 我真的很困惑。当我做: 它给我错误 UnicodeDecodeError:’ascii’编解码器无法解码位置0的字节0xef:序数不在范围内(128) 如果我做: 它工作正常。 问题 是为什么第一种方法会失败?以及如何插入宝? 如果第二种方法是正确的方法,那么使用的重点是什么? 问题答案: 我相信问题在于这是字节字符串,而不是Unicode字符串。我怀疑文件处理程序试图根据“我是将Un

  • 问题内容: 我在理解将文本写入文件和将文件写入文件时遇到了大脑故障(Python 2.4)。 因此,我在文件f2 中输入我最喜欢的编辑器。 然后: 我在这里不明白什么?显然,我缺少一些至关重要的魔术(或理性)。一种类型的文本文件可以正确转换? 在这里,我真正无法理解的是UTF-8表示法的意义所在,如果你实际上无法让Python识别它的话(如果它来自外部)。也许我应该只将JSON转储字符串,然后使用

  • 问题内容: 我正在通过FileReader读取文件-该文件已经过UTF-8解码(使用BOM),现在的问题是:我读取了文件并输出了字符串,但可悲的是BOM表标记也被输出了。为什么会这样? 第一行后输出 问题答案: http://www.rgagnon.com/javadetails/java-handle-utf8-file-with-bom.html

  • 我有一个批处理步骤 读取器和处理器流程如何工作?读取器是读取块并等待处理器处理它,还是一次读取所有块。

  • 项目读取器将数据从特定源代码读入Spring批处理应用程序,而项目写入器将数据从Spring Batch应用程序写入特定目标。 Item处理器是一个包含处理代码的类,该代码处理读入spring批处理的数据。 如果应用程序读取条记录,则处理器中的代码将在每条记录上执行。 块(chunk)是该tasklet的子元素。 它用于执行读取,写入和处理操作。 可以在如下所示的步骤中配置使用此元素的读取器,写入