从文件中读出数据流时,出现数据错误,求教怎么回事儿啊

黑咖日记 2016-12-01 07:21:15
是这样,以前在c#下开发的一个程序,从文档中读取数据的机能是正常的。
但是同样的功能用java实现时,读出的数据却不一样,出现了异常。比如下面的两段代码,c#的业务处理是正常的,其byte[]变量bData全部都是正数。
但是java中读出来的bData 中出现了一些负数,进行业务处理的时候就不正常了。
不知道是怎么回事儿呢?
自己在这方面比较渣,请各位指教

这是C#的:

FileStream oFileStream = null;
try
{
oFileStream = File.OpenRead(asFilePath);
List<DataFrame> oDataList = new List<DataFrame>();
byte[] bData = new byte[32];
oFileStream.Position = 0;
while (oFileStream.Position < oFileStream.Length)
{
oFileStream.Read(bData, 0, 32);
DataFrame oNewData = GetDataFromByte(bData);
oDataList.Add(oNewData);
}
return oDataList;
}
finally
{
if (oFileStream != null)
{
oFileStream.Close();
}
}


这是JAVA的:

InputStream inputStream = null;
try
{
inputStream = new FileInputStream(asFilePath);
List<DayData> oDataList = new ArrayList<DayData>();
byte[] bData = new byte[32];
while (inputStream.read(bData) != -1)
{
DayData oNewData = GetDataFromByte(bData);
oDataList.add(oNewData);
}
return oDataList;
}
finally
{
if (inputStream != null)
{
inputStream.close();
}
}

...全文
396 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑咖日记 2016-12-09
  • 打赏
  • 举报
回复
引用 5 楼 bcsflilong 的回复:
java实现的 GetDataFromByte(bData); 这个方法中是不是也有类似oFileStream.Read(bData, 0, 32); 这样的写法 那个32 不能写死 是动态的 他的值应该是inputStream.read(bData) 的值
嗯,相关代码的具体写法我还得再考究一下,谢谢
黑咖日记 2016-12-09
  • 打赏
  • 举报
回复
引用 1 楼 piterlin 的回复:
是不是有符号整数与无符号整数的转换问题? java是有符号整数。 可以参考http://blog.sina.com.cn/s/blog_022295eb01014pws.html
的确和这个有关系,我得出来的负数加上256后正好是C#版的数值。 虽然还不是很懂,但是应该是这个原因。
bcsflilong 2016-12-05
  • 打赏
  • 举报
回复
java实现的 GetDataFromByte(bData); 这个方法中是不是也有类似oFileStream.Read(bData, 0, 32); 这样的写法 那个32 不能写死 是动态的 他的值应该是inputStream.read(bData) 的值
黑咖日记 2016-12-05
  • 打赏
  • 举报
回复
求大神来帮忙
黑咖日记 2016-12-02
  • 打赏
  • 举报
回复
T.T自己顶顶
黑咖日记 2016-12-01
  • 打赏
  • 举报
回复
引用 1 楼 piterlin 的回复:
是不是有符号整数与无符号整数的转换问题?
java是有符号整数。
可以参考http://blog.sina.com.cn/s/blog_022295eb01014pws.html

多谢,回头我看看.
那么,麻烦看一看啊,我写的这段java代码,本身有没有问题呢?
piterlin 2016-12-01
  • 打赏
  • 举报
回复
是不是有符号整数与无符号整数的转换问题? java是有符号整数。 可以参考http://blog.sina.com.cn/s/blog_022295eb01014pws.html

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧