Java读取二进制文件的方式
- 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
- }
- }
- }
/**
* 随机读取文件内容
*/
public
static
void
readFileByRandomAccess(String fileName) {
RandomAccessFile randomFile =
null
;
try
{
System.out.println(
"随机读取一段文件内容:"
);
// 打开一个随机访问文件流,按只读方式
randomFile =
new
RandomAccessFile(fileName,
"r"
);
// 文件长度,字节数
long
fileLength = randomFile.length();
// 读文件的起始位置
int
beginIndex = (fileLength >
4
) ?
4
:
0
;
// 将读文件的开始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte
[] bytes =
new
byte
[
10
];
int
byteread =
0
;
// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。
// 将一次读取的字节数赋给byteread
while
((byteread = randomFile.read(bytes)) != -
1
) {
System.out.write(bytes,
0
, byteread);
}
}
catch
(IOException e) {
e.printStackTrace();
}
finally
{
if
(randomFile !=
null
) {
try
{
randomFile.close();
}
catch
(IOException e1) {
}
}
}
}