Java读取二进制文件 乱码 求大神帮忙 10

Filefile=newFile("D:/Users/yao/Desktop/test/2.rec");if(file.exists()){try{FileInputSt... File file = new File("D:/Users/yao/Desktop/test/2.rec");
if(file.exists()){
try {
FileInputStream in = new FileInputStream(file);
DataInputStream dis=new DataInputStream(in);

byte[] itemBuf = new byte[20];
//市场编码
dis.read(itemBuf, 0, 8);
String marketID =new String(itemBuf,0,8);

//市场名称
dis.read(itemBuf, 0, 20);//read方法读取一定长度之后,被读取的数据就从流中去掉了,所以下次读取仍然从 0开始
String marketName =new String(itemBuf,0,20);

//上一交易日日期
dis.read(itemBuf, 0, 8);
String lastTradingDay = new String(itemBuf,0,8);

//当前交易日日期
dis.read(itemBuf, 0, 8);
String curTradingDay = new String(itemBuf,0,8);

//交易状态
dis.read(itemBuf, 0, 1);
String marketStatus = new String(itemBuf,0,1);

//交易时段数
// short tradePeriodNum = dis.readShort();

System.out.println("市场代码:"+ marketID);
System.out.println("市场名称:"+ marketName);
System.out.println("上一交易日日期:"+ lastTradingDay);
System.out.println("当前交易日日期:"+ curTradingDay);
System.out.println("当前交易日日期:"+ curTradingDay);
System.out.println("交易状态:"+ marketStatus);
// System.out.println("交易时段数:"+ tradePeriodNum);

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//close
}
}
展开
 我来答
16sRNA
推荐于2018-03-21 · TA获得超过2500个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:361万
展开全部
String marketID =new String(itemBuf,0,8);

改为

String marketID =new String(itemBuf,0,8,Charset.forName("UTF-8"));

其他行类似

如果你的二进制文件是其他编码的,就用相应的编码替换UTF-8
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
指尖点滴bV
2015-03-13 · TA获得超过626个赞
知道小有建树答主
回答量:1258
采纳率:71%
帮助的人:254万
展开全部
把2.rec文件放到网盘,告诉我地址,我帮你解决。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuxingxingvip
2015-03-13 · TA获得超过252个赞
知道小有建树答主
回答量:372
采纳率:70%
帮助的人:124万
展开全部
你确定编码方式是一样的吗,Java采用的是Unicode,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式