使用PrintWriter将ASCII代码写入文件

时间:2011-02-12 08:07:57

标签: java ascii printwriter

我想知道当我使用PrintWriter写入文件时。它会用文件或二进制格式的ASCII码写吗? 感谢。

3 个答案:

答案 0 :(得分:3)

Writer写入字符,因此文件中的二进制数据取决于编码。

例如,如果你有一个像UTF-16这样的16位编码,那么每个ASCII字节都会有一个额外的零字节:

public class TestWriter
{
    public static void main(String[] args)
    throws UnsupportedEncodingException
    {
        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        final OutputStreamWriter out = new OutputStreamWriter(baos, "UTF-16");
        final PrintWriter writer = new PrintWriter(out);

        writer.printf("abc");
        writer.close();

        for (final byte b : baos.toByteArray())
        {
            System.out.printf("0x%02x ", b);
        }
        System.out.printf("\n");
    }
}

打印0xfe 0xff 0x00 0x61 0x00 0x62 0x00 0x63

答案 1 :(得分:0)

它将输出字符数据。但这可能超出了ASCII集,它只包含128个字符,其中前32个是特殊控制字符。

答案 2 :(得分:0)

您可以将大多数ASCII字母写为文本或二进制文件,并且您将获得与大多数字符编码相同的结果。两个ASCII字符在文本文件中有特殊含义,是换行符\ n和回车符\ r \ n。这意味着如果您有文本文件并且想要编写包含这些字符的字符串,则读者可能很难或不可能区分文本文件中的行结束,例如println()和你输入的行尾例如打印( “1 \ N 2 \ N3 \ n” 个)