Topic: java读二进制字符串问题. |
Print this page |
1.java读二进制字符串问题. | Copy to clipboard |
Posted by: ytfinst Posted on: 2007-04-10 16:36 最近学io包,碰到一个问题 .请各位达人帮忙解决下: DataOutputSteam中有一个方法writeChars()可以写入字符串,问题是写进 去,变成二进制之后怎么将这个字符串读取出来呢,DataInputStream类里面 有一个过时的方法,里面推荐用BufferedReader类里面的方法去取字符串,本 人菜鸟一个.不会用啊.望高手解决. 原题是: DataOutputSteam dos=new DataOutputSteam("aa.txt"); dos.writeChars("这是一个字符串"); 怎么将它取出来呢? |
2.Re:java读二进制字符串问题. [Re: ytfinst] | Copy to clipboard |
Posted by: xuxiaolei Posted on: 2007-04-10 20:05 DataOutputStream中的writeChars()方法写到文件中的是二进制格式,要是直接用下面的语句 FileOutputStream fileOutput = new FileOutputStream("c:\\file.txt"); DataOutputStream dataOutput = new DataOutputStream(fileOutput); dataOutput.writeChars("abc"); dataOutput.close(); fileOutput.close(); FileInputStream fileInput = new FileInputStream("c:\\file.txt"); InputStreamReader reader = new InputStreamReader(fileInput); BufferedReader buffer = new BufferedReader(reader); String line = buffer.readLine(); System.out.println(line); buffer.close(); reader.close(); fileInput.close(); 读的话得到的结果,如图片所示 |
3.Re:java读二进制字符串问题. [Re: ytfinst] | Copy to clipboard |
Posted by: xuxiaolei Posted on: 2007-04-10 20:11 但是,要是直接用BufferedReader直接读文本格式的文件,就不会有上面的问题 还有就是用下面的语句读DataOutputStream中的writeChars()产生的文件在单个字符是正常的 RandomAccessFile file = new RandomAccessFile("c:\\file.txt", "r"); System.out.println(file.readChar()); 难道读二进制格式的文件,要自己写读一行字符串的方法,等待高手解答啊 |
4.Re:java读二进制字符串问题. [Re: ytfinst] | Copy to clipboard |
Posted by: JiafanZhou Posted on: 2007-04-10 22:00 这个问题我以前也经历过,不要怕,先来看看DataOutputStream.writeChars()的原代码
The '>>>' shifts a zero into the leftmost position, while '>>' depends on sign extension.因为 Java是用Unicode来表述一个char的,所以要用2个字节,(ASCII用一个字节) 所以长度也要*2。 1) 用BufferedReader.readLine()读一行文件,就会打出第一个空char. 2) RandomAccessFile.readChar()读两个字节,相当与一个char,就没有问题。
Consider about the above code. Cheers, Jiafan |
5.Re:java读二进制字符串问题. [Re: ytfinst] | Copy to clipboard |
Posted by: ytfinst Posted on: 2007-04-10 23:27 楼上很强啊,谢谢.已经搞定. |
6.Re:java读二进制字符串问题. [Re: ytfinst] | Copy to clipboard |
Posted by: xuxiaolei Posted on: 2007-04-11 13:04 谢谢HenryShanley 的指导,有空也要看看源代码了 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |