Java writeUTF将null添加到输出 for(int i=0;i

Java writeUTF将null添加到输出 for(int i=0;i,java,Java,这正是文档中所描述的操作。如果您不希望这种行为,请不要要求它 首先,通过writeShort方法将两个字节写入输出流,给出要遵循的字节数。该值是实际写入的字节数,而不是字符串的长度。在长度之后,字符串的每个字符都会使用修改后的UTF-8编码按顺序输出 DataOutputStream对于编写文本来说是一个糟糕的选择。它被设计为编写不同的Java数据类型并用Java程序读取它们。以Java.io.BufferedWriter(Java 7风格的示例)为例 您的预期输出是什么?我没有听说过这种行为

这正是文档中所描述的操作。如果您不希望这种行为,请不要要求它

首先,通过
writeShort
方法将两个字节写入输出流,给出要遵循的字节数。该值是实际写入的字节数,而不是字符串的长度。在长度之后,字符串的每个字符都会使用修改后的UTF-8编码按顺序输出


DataOutputStream对于编写文本来说是一个糟糕的选择。它被设计为编写不同的Java数据类型并用Java程序读取它们。以Java.io.BufferedWriter(Java 7风格的示例)为例


您的预期输出是什么?我没有听说过这种行为
for(int i=0;i<charset.size(); i++ )
       {
       String plaintext1= charset.get(i); 
       fos= new FileOutputStream("/root/something.txt", true);
       dos= new DataOutputStream(fos);
       String hashtext=CreateHash.returnString(charset.get(i));
        dos.writeUTF('\n'+plaintext1+" ="+hashtext);
       fos.close();
       dos.close();
       }  
    try (BufferedWriter wrt = Files.newBufferedWriter(Paths.get("file"), StandardCharsets.UTF_8)) {
        wrt.write("text");
    }