0

私がしたいのは、メモ帳から文字を読み取り、それをバイトに変換して別のファイルに保存することだけです。

「a.txt」には、メモ帳に「Hello World!」という単純なテキストが含まれています。

ただし、「b.txt」には、バイト値ではなく人間が読める文字が表示されます。System.out.print(ba)を実行すると、バイトが出力されることにも気付きました。

Javaがバイト値を「b.txt」に書き込まない理由を誰か教えてもらえますか?

import java.io.*;

class a {
    static int f;
    static String s;

    public static void main(String args[]) 
    throws IOException {
        BufferedReader  br = new BufferedReader(new FileReader ("a.txt"));
        BufferedOutputStream w = new BufferedOutputStream(new FileOutputStream("b.txt"));

        byte ba[] = new byte[1024];

        while((s=br.readLine())!=null) {
            ba = s.getBytes();
            System.out.print(ba);
            w.write(ba);
        }
    w.flush();
    w.close();
    br.close();
    }
}
4

3 に答える 3

1

生のバイト値をファイルに書き込んでいます。
メモ帳はそれらをASCIIテキストとして読み取ります。

いずれかのファイルを16進エディタで開くと、実際のバイト値が表示されます。

メモ帳でバイト値を表示する場合は、各バイトを文字列としてファイルに出力する必要があります。通常、各バイトを表示できるようにスペースで区切ります。

于 2012-09-02T21:14:20.930 に答える
1

a.txt をバイト単位で b.txt にコピーしています。もちろん、それはテキストとして表示されますが、なぜそうではないのでしょうか? これを使用した後に実際にテキスト エディターでバイトを表示したい場合は、最初にバイトをそれらを表すテキストに変換してから、それを書き出す必要があります。ba を整数にキャストし、Integer.toBinaryString を使用してバイトをテキストに変更し、それを書き出します。そうすれば、結果をテキスト エディターで開き、バイトをテキスト (0 と 1) として表示できます。

于 2012-09-02T21:23:21.030 に答える
1

はバイトのgetBytes()配列を返すため、この配列を反復処理してファイルに書き込む必要があります

   while((s=br.readLine())!=null) {
        ba[]= s.getBytes();
        for (int i=0;i<ba.lenght;i++){
           w.writeInt(ba[i]);
        }            
    }

テストされていないコード

于 2012-09-02T21:24:20.047 に答える