我想知道,當我使用PrintWriter
寫入文件時。它將用ASCII碼以文件或二進制格式寫入? 謝謝。使用PrintWriter將ASCII代碼寫入文件
2
A
回答
0
它會輸出字符數據。但是這可能超出ASCII集,它只保留128個字符,其中前32個是特殊控制字符。
3
甲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
您可以將大多數ASCII字母寫爲文本或二進制文件,並且您將獲得大多數字符編碼的相同結果。兩個ASCII字符在文本文件中有特殊含義,是換行符\ n並且回車符\ r。這意味着如果你有文本文件,並且你想寫一個包含這些字符的字符串,讀者可能很難或不可能區分文本文件中的行尾,例如println()和行結尾放入一個字符串,例如打印( 「1個\ N2 \ N3 \ n」)
什麼是ASCII和二進制格式之間的區別,你期待什麼呢?所有都是磁盤文件中的二進制文件。 – Thomson 2011-02-12 08:17:09