Использование PrintWriter для записи кодов ASCII в файл - PullRequest
2 голосов
/ 12 февраля 2011

Я хочу знать, что когда я использую PrintWriter для записи в файл. Он будет писать с кодом ASCII в файле или в двоичном формате? Благодаря.

Ответы [ 3 ]

3 голосов
/ 12 февраля 2011

A Writer записывает символы, поэтому двоичные данные, которые попадают в файл, зависят от кодировки.

Например, если у вас 16-битная кодировка, такая как UTF-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.

0 голосов
/ 12 февраля 2011

Вы можете написать большинство букв ASCII как текстовые или двоичные, и вы получите тот же результат с большинством кодировок символов. Два символа ASCII имеют особое значение в текстовых файлах, это перевод строки \ n и возврат каретки \ r. Это означает, что если у вас есть текстовый файл и вы хотите написать строку, содержащую эти символы, читателю может быть трудно или невозможно различить конец строки в текстовом файле, например, println () и конец строки, который вы помещаете в строку, например печать ( "1 \ n2 \ n3 \ п")

0 голосов
/ 12 февраля 2011

Выводит символьные данные.Но это может быть за пределами набора ASCII, который содержит только 128 символов, из которых первые 32 являются специальными управляющими символами.

...