首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

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

2013-09-21 
求教:c语言保存的文件java打开的问题本帖最后由 fieldisme 于 2013-09-18 08:28:36 编辑struct Data//数据

求教: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 都行 就解决了
[解决办法]

引用:
感谢各位的热心回答,json没听说过,估计是一种特殊的数据组合吧,以后会去慢慢了解,可现在我最急的是,我的数据怎么在java中读出来,是二进制文件,我的数据已经那样了,要改变数据的存储方式的话,太麻烦了,难道我这样写入的文件java中就没办法读出来吗

不懂JSON也没关系,C写入文件的时候不要写入结构体,而是把结构体里的基本数据按照特定顺序一个一个存入文件,然后在java 中按照同样的顺序读取就行了。
[解决办法]
不要直接write data,因为你并不知道c到底是如何存储struct结构的数据的,

实在要这么玩,可以用UltrulEdit这样的工具看看文件的hex码,研究下数据的存储结构先

热点排行