急:从文件中读byte[](200分)

  • 主题发起人 主题发起人 安稼
  • 开始时间 开始时间

安稼

Unregistered / Unconfirmed
GUEST, unregistred user!
我要从一个平文件里读记录,一开始我用BufferedReader的readLine(),但是发现当文中出现乱码时,如
64 65 66 [red]A4[/red] 20
64 65 66 20 20
其中A4是一个不正确的字符,当我用readLine()读出一个String然后转到一个byte[]数组时,就会出问题。因为我要根据每行的byte数确定是什么平文件记录,像上面的例子应该是5个字节,但用上面的方法,第一行得到的byte[]只有四个字节,而第二行才能得到正确的五个字节。
如果用BufferedInputStream的read(byte[])方法,能够得到正确的byte数,但是字节数组的处理却比string难很多。
有没有哪位能够提供一个方法使readLine()得到的String在转到byte[]时不会有那样的问题
 
byte[] b=new byte[4];
inData=new BufferedInputStream(new FileReader(/*path+文件名*/));
int a=inData.read(b,0,4);
但首先要知道文件的长度哦
 
BufferedInputStream得到 byte[] b
用String str=new String(b,"iso8859-1");即可将数组转化成字符串
 
only you,
iso8859-1好像能够使长度不变,但是有时读入"=20"时应当是3个byte,然后一个回车0d0a,两个byte,一共是5个byte,但FileInputStream读出来却只有4个byte,0d好像没有了。[?]
我记得JVM好像是自动调用系统的编码方式,那就应当是GBK吧,混合编码?象"123一二三"读进来应该是9个byte?
迷惑中................
 
你说的这些问题在于java的流机制本身有问题!例如
read方法,明明是读取一个int类型的,但实际上它返回的是一个字节,实际上只有int类型的低8位被使用。
 
多人接受答案了。
 
后退
顶部