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
}
} 展开
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
}
} 展开
3个回答
展开全部
String marketID =new String(itemBuf,0,8);
改为
String marketID =new String(itemBuf,0,8,Charset.forName("UTF-8"));
其他行类似
如果你的二进制文件是其他编码的,就用相应的编码替换UTF-8
改为
String marketID =new String(itemBuf,0,8,Charset.forName("UTF-8"));
其他行类似
如果你的二进制文件是其他编码的,就用相应的编码替换UTF-8
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把2.rec文件放到网盘,告诉我地址,我帮你解决。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你确定编码方式是一样的吗,Java采用的是Unicode,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询