现在有一个dat文件是以二进制存储的。里面的内容格式我现在知道。我想用java来解析出来。
现在有一个dat文件是以二进制存储的。里面的内容格式我现在知道。我想用java来解析出来.我现在已经将dat文件读取到byte数组中了。但是转换成String时是乱码。请...
现在有一个dat文件是以二进制存储的。里面的内容格式我现在知道。我想用java来解析出来.我现在已经将dat文件读取到byte数组中了。但是转换成String时是乱码。请各位大神帮忙!代码如下:
public void parseOneFile(File file) {
try {
/**
* 读取文件流
*/
InputStream inputStream = new FileInputStream(file);
/**
* 缓冲流
*/
BufferedInputStream bufferedInputStream = new BufferedInputStream(
inputStream);
/**
* 字节数组
*/
byte[] filebyte = null;
/**
* 读入文件的字节长度
*/
long filelength = file.length();
if (filelength > Integer.MAX_VALUE) {
logger.info("the file is too large!");
return;
}
/**
* 初始化
*/
filebyte = new byte[(int) filelength];
try {
/**
* 读取的起始值
*/
int offset = 0;
/**
* 读取的字节数
*/
int numRead = 0;
while (offset < filebyte.length
&& (numRead = bufferedInputStream.read(filebyte,
offset, filebyte.length - offset)) >= 0) {
offset += numRead;
}
if (offset < filebyte.length) {
throw new IOException(
"Could not completely read file "
+ file.getName());
}
String temp=new String(filebyte,"GB2312");
System.out.println(temp);
} catch (IOException e) {
logger.error("read file error!", e);
}
} catch (FileNotFoundException e) {
logger.error("file is not found!", e);
}
} 展开
public void parseOneFile(File file) {
try {
/**
* 读取文件流
*/
InputStream inputStream = new FileInputStream(file);
/**
* 缓冲流
*/
BufferedInputStream bufferedInputStream = new BufferedInputStream(
inputStream);
/**
* 字节数组
*/
byte[] filebyte = null;
/**
* 读入文件的字节长度
*/
long filelength = file.length();
if (filelength > Integer.MAX_VALUE) {
logger.info("the file is too large!");
return;
}
/**
* 初始化
*/
filebyte = new byte[(int) filelength];
try {
/**
* 读取的起始值
*/
int offset = 0;
/**
* 读取的字节数
*/
int numRead = 0;
while (offset < filebyte.length
&& (numRead = bufferedInputStream.read(filebyte,
offset, filebyte.length - offset)) >= 0) {
offset += numRead;
}
if (offset < filebyte.length) {
throw new IOException(
"Could not completely read file "
+ file.getName());
}
String temp=new String(filebyte,"GB2312");
System.out.println(temp);
} catch (IOException e) {
logger.error("read file error!", e);
}
} catch (FileNotFoundException e) {
logger.error("file is not found!", e);
}
} 展开
3个回答
展开全部
换UTF-8试试。
要不就是你解析有误。dat可能不是一个文本文件。
你这种读byte的方法恐怕有误
要不就是你解析有误。dat可能不是一个文本文件。
你这种读byte的方法恐怕有误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
确认一下dat文件的文字编码是不是"GB2312",试一下"utf-8"啥的成不成
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哎,好复杂,但愿有人帮你啊。我是学C的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询