- import java.io.DataOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStreamWriter;
- public class FileTest {
-
-
-
-
- public static void main(String[] args) {
- File file = new File("G://DataOutputStream.txt");
- File file2 = new File("G://OutputStreamWriter.txt");
- try {
-
- DataOutputStream output = new DataOutputStream(new FileOutputStream(file));
-
- output.writeUTF("a");
-
- output.writeUTF("b");
-
- file2.createNewFile();
-
- OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file2));
- writer.write("a");
- writer.write("b");
- writer.flush();
- } catch (IOException e) {
-
- e.printStackTrace();
- }
-
-
-
-
-
- }
- }
两个方法写出的16进制码分别是
DataOutputStream的writeUTF():00 01 61 00 01 62
OutputStreamWriter的write():61 62
经个人分析,writeUTF()写出一个UTF-8编码的字符串前面会加上2个字节的长度标识,已标识接下来的多少个字节是属于本次方法所写入的字节数。
而write()方法按照常理,直接写出UTF-8编码后的字符。