当前位置: 代码迷 >> Eclipse >> c语言保存的文件java打开的有关问题
  详细解决方案

c语言保存的文件java打开的有关问题

热度:8   发布时间:2016-04-23 01:12:07.0
求教:c语言保存的文件java打开的问题
本帖最后由 fieldisme 于 2013-09-18 08:28:36 编辑

struct Data//数据结构
{wchar_t a[100];
 int b ;
 wchar_t c[20];
};
//保存到文件
Data a;file f;
..........
f.Write(&a,sizeof(Data);

以上是保存成文件的大体样子
以下在java中读取

class Data
{byte a[]=new byte[200];
 byte b[]=new byte[4];
 byte c[]=new byte[40];
};
//以下代码在窗口(activity)的onCreate事件中
Data data=new Data();
InputStream filestream;
filestream=getResources().openRawResource(R.raw.info);
filestream.read(data.a);
filestream.read(data.b);
filestream.read(data.c);
filestream.close();
//以下把byte转换成字符,得到的结果不正确,如果换Data的成员变量a或b数组数减少1,勉强正确,
//但结束符之后的仍然被显示
String res = EncodingUtils.getString(data.c, "UNICODE");
//以下取出把b转换成int型,结果怎么都得不到正确值
int k=(((int)data.b[0]) << 24) + (((int)data.b[1]) << 16) + (((int)data.b[2]) << 8) + data.b[3]
请各位大大指点下,在java中要如何才能读到正确值,我用的是Eclipse3.71,安卓编程

------解决方案--------------------
为啥不用json格式或xml
------解决方案--------------------
为什么不都用 java 来做呢
你用 filestream 的时候可以镶嵌个字符流试下,按理说 java 读取文件的话应该是可以的
------解决方案--------------------
建议你用C++保存文件的时候,别直接写入结构体,改成写入基本数据试试。C++结构体在文件中的保存的数据结构,和JAVA对象在文件中保存的数据结构,可能不相同。这导致了你用读取JAVA对象的方式读取C++结构体,会出现问题。
------解决方案--------------------
json真的是个好东东
------解决方案--------------------
无论使用什么语言去写文件,只要你写的时候以文本方式保存,任何语言都能轻而易举读出来的。
------解决方案--------------------
引用:
感谢各位的热心回答,json没听说过,估计是一种特殊的数据组合吧,以后会去慢慢了解,可现在我最急的是,我的数据怎么在java中读出来,是二进制文件,我的数据已经那样了,要改变数据的存储方式的话,太麻烦了,难道我这样写入的文件java中就没办法读出来吗
在c++写入文件的时候 加一个程序  把写入的文件用c++编个吗 json  xml 都行 就解决了
------解决方案--------------------