java读取二进制文件中的数据的问题
一个二进制文件,用c#读取的时候,数据是正确的,比如全部是正整数,而当我用java读取的时候,就出现了负数(使用的是DataInputStream这个类读取的),请问是什...
一个二进制文件,用c#读取的时候,数据是正确的,比如全部是正整数,而当我用java读取的时候,就出现了负数(使用的是DataInputStream这个类读取的),请问是什么原因 ,是我读取的方法不对还是其他什么原因,求高手回答,谢谢了 ,有点急!!
如果是
我猜想你读取数据的方法没有错。
出现你提到的现象应该是数据类型使用上的问题。在java中没有无符号数据类型,比如C#里的dword等 所以在java里的数据就出现了负数了。在java里需要用特殊的方法来处理这种无符号数据类型。
那在java中具体怎么处理呢 谢谢了 展开
如果是
我猜想你读取数据的方法没有错。
出现你提到的现象应该是数据类型使用上的问题。在java中没有无符号数据类型,比如C#里的dword等 所以在java里的数据就出现了负数了。在java里需要用特殊的方法来处理这种无符号数据类型。
那在java中具体怎么处理呢 谢谢了 展开
3个回答
展开全部
二进制读取文件的形式中如果用的是read读取,那么此时就会出现乱码问题(中文是两个字节,read只能读取一个),所以都是通过readline方法来进行整行的内容读取来进行问题解决。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
展开全部
我猜想你读取数据的方法没有错。
出现你提到的现象应该是数据类型使用上的问题。
在java中没有无符号数据类型,比如C#里的dword等 所以在java里的数据就出现了负数了。
在java里需要用特殊的方法来处理这种无符号数据类型。
出现你提到的现象应该是数据类型使用上的问题。
在java中没有无符号数据类型,比如C#里的dword等 所以在java里的数据就出现了负数了。
在java里需要用特殊的方法来处理这种无符号数据类型。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java读取二进制文件给你一个通用的。
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
这个就可以读取二进制文件了。
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
这个就可以读取二进制文件了。
更多追问追答
追问
但是读出的东西在哪买转换为int 或double型的呢
追答
这个是以字符流来读取的二进制文件,所以读出来的你要通过String进行相关的转化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询