DataOutputStream的writeUTF()方法与OutputStreamWriter的write()区别!

import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; public class FileTest { /** * @param args */ public static void main(String[] args) { File file = new File("G://DataOutputStream.txt"); File file2 = new File("G://OutputStreamWriter.txt"); try { //file.createNewFile(); 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) { // TODO Auto-generated catch block e.printStackTrace(); } /*for(File f:file.listRoots()){ System.out.println(f); }*/ } }

两个方法写出的16进制码分别是

DataOutputStream的writeUTF():00 01 61 00 01 62

OutputStreamWriter的write():61 62

经个人分析,writeUTF()写出一个UTF-8编码的字符串前面会加上2个字节的长度标识,已标识接下来的多少个字节是属于本次方法所写入的字节数。

而write()方法按照常理,直接写出UTF-8编码后的字符。

你可能感兴趣的:(String,File,Class,import,output)