PrintWriter输出乱码

时间:2015-02-08 18:35:45

标签: java io printwriter

我有以下代码

    //Put the collection frequencies into a file            
    Iterator iter = docFreq.entrySet().iterator();

    while(iter.hasNext())
    {
        Map.Entry tf = (Map.Entry)iter.next();
        pw.write((String)tf.getKey());
        pw.write("\t");
        pw.write((int)tf.getValue());
        pw.write("\t");
        float fractionofDocs = (int)tf.getValue()/(float)size;
        pw.println(fractionofDocs);
    }

    pw.close();

我看到写入文件的第二个值的乱码输出,即pw.write((int)tf.getValue());

输出是这样的

and õ   0.9607843
of  ë   0.92156863
the ê   0.91764706
on  Þ   0.87058824
information Ö   0.8392157

如果省略最后一个字段,即在从int

中删除这些行后,我能够看到第二个字段打印为while
pw.write("\t");
float fractionofDocs = (int)tf.getValue()/(float)size;
pw.println(fractionofDocs);

任何人都可以告诉我我哪里错了吗?

1 个答案:

答案 0 :(得分:1)

Writer.write有两个重载 - 一个写入单个字符,另一个写入String。这类似于OutputStream.write如何写入字节或字节数组。

您正在呼叫Writer.write(int),其中int会将其转换为char并写入char

您希望使用print代替write