DataOutputStream的编码问题 本帖最后由 fskjb01 于 2009-10-02 09:43:10 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主有用.text 做扩展名的吗呵呵,除非linux应该是.txt吧 算我写错了-。=,不过就算是txt也一样,结果还是乱码。 void writeBoolean(boolean v) 将一个 boolean 值以 1-byte 值形式写入基础输出流。 void writeByte(int v) 将一个 byte 值以 1-byte 值形式写出到基础输出流中。 void writeBytes(String s) 将字符串按字节顺序写出到基础输出流中。 void writeChar(int v) 将一个 char 值以 2-byte 值形式写入基础输出流中,先写入高字节。 void writeChars(String s) 将字符串按字符顺序写入基础输出流。 void writeDouble(double v) 使用 Double 类中的 doubleToLongBits 方法将 double 参数转换为一个 long 值,然后将该 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。 void writeFloat(float v) 使用 Float 类中的 floatToIntBits 方法将 float 参数转换为一个 int 值,然后将该 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。 void writeInt(int v) 将一个 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。 void writeLong(long v) 将一个 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。 void writeShort(int v) 将一个 short 值以 2-byte 值形式写入基础输出流中,先写入高字节。 void writeUTF(String str) 以与机器无关方式使用 UTF-8 修改版编码将一个字符串写入基础输出流。 看看这些资料你应该能明白,DataOutputStream是一种格式化的数据输出方式而并非都是字符流 如果写到文件中他的数据格式 就和在内存中一样 这样他读出来是会很方便但文本打开的是字符编码的 你想想 int long 的数据肯定不是字符编码的 那肯定是乱码了UTFString 可以正确显示就说明 UTF-8的字符是可以正常显示 编码是对的用 16进制编辑器打开(UtralEdit)你就可以看到 true 写进去的值是 01 a写进去是 61 40 直接用输入输出流,java都封装好 了 读写字符流你可以看看FileReader BufferedReaderFileWriter BufferedWriter将数转换为字符串 然后写入 读出来时读字符串再转换成数用DataOutputStream 输出的数据并不是为了用记事本打开看的而是为了储存数据的 一般来保存为.dat文件区别开文本本件 反射在JAVA起到的作用!(高手请进) 那位大虾解决一下新手的困惑? 关于继承与构造方法的问题?大家帮帮忙! 如何保持程序与网页连接状态 java如何提交网页 请教个SocketException Socket is closed异常问题 关于抽象类,接口的小问题! java中的“this”问题,请高手指教一二! 大家快来帮帮我!很简单的问题 急!!结课作业!菜鸟求指点:如何通讯录实现排序??求代码 jpcap如何安装,安装到什么路径 055.154-Which statement is true?
有用.text 做扩展名的吗
呵呵,除非linux应该是.txt吧
将一个 boolean 值以 1-byte 值形式写入基础输出流。
void writeByte(int v)
将一个 byte 值以 1-byte 值形式写出到基础输出流中。
void writeBytes(String s)
将字符串按字节顺序写出到基础输出流中。
void writeChar(int v)
将一个 char 值以 2-byte 值形式写入基础输出流中,先写入高字节。
void writeChars(String s)
将字符串按字符顺序写入基础输出流。
void writeDouble(double v)
使用 Double 类中的 doubleToLongBits 方法将 double 参数转换为一个 long 值,然后将该 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。
void writeFloat(float v)
使用 Float 类中的 floatToIntBits 方法将 float 参数转换为一个 int 值,然后将该 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。
void writeInt(int v)
将一个 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。
void writeLong(long v)
将一个 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。
void writeShort(int v)
将一个 short 值以 2-byte 值形式写入基础输出流中,先写入高字节。
void writeUTF(String str)
以与机器无关方式使用 UTF-8 修改版编码将一个字符串写入基础输出流。 看看这些资料你应该能明白,DataOutputStream是一种格式化的数据输出方式而并非都是字符流
如果写到文件中他的数据格式 就和在内存中一样 这样他读出来是会很方便但文本打开的是字符编码的 你想想 int long 的数据肯定不是字符编码的 那肯定是乱码了UTFString 可以正确显示就说明 UTF-8的字符是可以正常显示 编码是对的用 16进制编辑器打开(UtralEdit)
你就可以看到 true 写进去的值是 01
a写进去是 61 40
FileReader BufferedReader
FileWriter BufferedWriter
将数转换为字符串 然后写入 读出来时读字符串再转换成数用DataOutputStream 输出的数据并不是为了用记事本打开看的而是为了储存数据的 一般来保存为
.dat文件区别开文本本件