java 问题

有个日志文件,二进制的。里面的信息有:

范围(字节) 内容
0--31 登入用户名
32--67 /*不需要的信息*/
68--71 进程ID
72--73 登入类型(7为登入,8为登出)
74--79 /*不需要的信息*/
80--83 登入时间(单位为秒)
84--113 /*不需要的信息*/
114--372 登入的IP地址

以上信息为一条信息,大小为372字节
例如这个日志文件有10条信息,总大小为3720字节

现在我想要读这个文件,并在控制台输出以上信息(/*不需要的信息*/ 就不用输出了)

解决了我再加分

/**
* 截取原数组并复制到新数组忠
*
* @param original
* 源数组
* @param begin
* 原数组起始位(包含)
* @param end
* 原数组结束位(不包含)
* @return new byte[] 返回新数组
*/
public static byte[] copyByteArray(byte[] original, int begin, int end) {
byte[] bytes = new byte[end - begin];
for (int i = 0; i < end - begin; i++) {
bytes[i] = original[begin + i];
}
return bytes;
}
public static String bytes2String(byte[] bytes) {
int len = 1;
// 判断是否补过0
for (int i = 0; i < bytes.length; i++) {
if (bytes[i] == 0) {
break;
} else {
len++;
}
}
return new String(bytes, 0, len-1);
}
第一先外层循环读取次数;
内层 截取所需要的长度
然后解析字符串
自己试验下就知道了,很简单的数据解析问题
如果jdk1.6就可以用 java api自带的数组截取方法
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-07
用 FileInputStream (File file)来读

0-31 也 就是 32位 4个字节 可以用read(byte[] 4) 来读取 4个字节
然后用 String 的构造方法String(byte[] bytes)来构造出 字符串

最终将 字符串 转型成你想要的 数据类型 例如 的那个读取出进程ID的时候 可以用Integer.parseInt(String s) 来得到整型 以此类推~
相似回答