outStream.close();但这里的字符串如果包含中文,就会出现乱码,这是因为FileOutputStream是字节流,将文本按字节写入文件,而一个汉字是两个字节,无法一次写入,就会出现乱码,解决方法是使用OutputStreamWriter将字节流转换为字符流写入,同时指定utf-8编码。代码如下:OutputStreamWriter oStreamWriter = ne...
(01) readUTF()的作用,是从输入流中读取UTF-8编码的数据,并以String字符串的形式返回。 (02) 知道了readUTF()的作用之后,下面开始介绍readUTF()的流程: 第1步,读取出输入流中的UTF-8数据的长度。代码如下: int utflen = in.readUnsignedShort();//UTF-8数据的长度包含在它的前两个字节当中;我们通过rea...
电脑有两种UTF,分别是UTF8和UTF16,UTF8占据的内存小,所以网络程序一般是UTF8,这里的writeUTF(),主要用来把你的的文件内容以UTF8的形式传入管道,进行传输,以utf-8的编码格式将信息打印出来
writeUTF(String str)方法是DataOutputStream中用于写入UTF-8编码字符串的方法。该方法将参数str按UTF-8编码方式转换为字节数组,然后写入数据流中,并将当前输出位置向前移动相应的字节数。比如: DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.bin")); dos.writeUTF("Hello, world!"); ...
和double数据的前4个字节一起读出来,最终造成了乱码。所以写入的数据类型顺序一定要对应读取的数据类型顺序。还有一种可能就是你编码格式的不统一造成的,jvm默认的编码格式是utf-16,而如果你在输入输出流中使用了别的编码格式,如utf-8,或者gbk等等都会造成乱码。
out.writeByte(CONSTANT_UTF8); out.writeUTF((String) value); }elseif(valueinstanceofInteger) { out.writeByte(CONSTANT_INTEGER); out.writeInt(((Integer) value).intValue()); }elseif(valueinstanceofFloat) { out.writeByte(CONSTANT_FLOAT); ...
importcom.google.common.io.LittleEndianDataOutputStream;//导入方法依赖的package包/类protectedvoidwriteString(LittleEndianDataOutputStream s, String str)throwsIOException{byte[] b = str.getBytes(Charsets.UTF_8);intlen = b.length; s.writeInt(len); ...
getBytesRead()); // double = 8bytes double d = tracker.readDouble(); assertEquals(1.0d, d, 0); assertEquals(30, tracker.getBytesRead()); // String("abc") = 2(string size) + 3 = 5 bytes String str = tracker.readUTF(); assertEquals("abc", str); assertEquals(35, tracker....
但这里的字符串如果包含中文,就会出现乱码,这是因为FileOutputStream是字节流,将文本按字节写入文件,而一个汉字是两个字节,无法一次写入,就会出现乱码,解决方法是使用OutputStreamWriter将字节流转换为字符流写入,同时指定utf-8编码。代码如下:OutputStreamWriter oStreamWriter = new OutputStreamWriter...
但这里的字符串如果包含中文,就会出现乱码,这是因为FileOutputStream是字节流,将文本按字节写入文件,而一个汉字是两个字节,无法一次写入,就会出现乱码,解决方法是使用OutputStreamWriter将字节流转换为字符流写入,同时指定utf-8编码。代码如下:OutputStreamWriter oStreamWriter = new OutputStreamWriter...