2

PrintWriterファイルへの書き込みに使用するときにそれを知りたいです。ファイルまたはバイナリ形式でASCIIコードで書き込みますか? ありがとう。

4

3 に答える 3

3

AWriterは文字を書き込むため、最終的にファイルに格納されるバイナリ データはエンコーディングによって異なります。

たとえば、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ます。

于 2011-02-12T08:28:41.077 に答える
0

ほとんどのASCII文字をテキストまたはバイナリとして記述でき、ほとんどの文字エンコードで同じ結果が得られます。ASCII文字のうちの2つは、テキストファイルで特別な意味を持ち、改行\nと復帰\rです。これは、テキストファイルがあり、これらの文字を含む文字列を記述したい場合、読者がテキストファイルの行末(println()と行末など)を区別するのが難しいか不可能な場合があることを意味します。文字列を入力します。例:print( "1 \ n2 \ n3 \ n")

于 2011-02-12T08:52:18.053 に答える
0

文字データを出力します。しかし、これは 128 文字しか保持しない ASCII セットを超えている可能性があり、そのうちの最初の 32 文字は特殊な制御文字です。

于 2011-02-12T08:24:18.203 に答える