java读取二进制文件并不难,以前在网上看了好多文章都是云里雾里的,这次来个清晰的
首先定义文件 File file = new File("F:/MarketInfo");
然后定义文件流 FileInputStream in = new FileInputStream(file);
接下来定义数据流 DataInputStream dis=new DataInputStream(in);
然后用数据流的read方法就可以读取了,下面直接上代码
- public static void readFile(String fileName){
- File file = new File(fileName);
- 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
- }
- }
- }
上图
在UltraEdit中查看是这个样子