Android:JAVA使用HDF5存储
Hierarchical Data Format,可以存储不同类型的图像和数码数据的文件格式,并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。大多数普通计算机都支持这种文件格式。
HDF是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF是由美国国家超级计算应用中心(NCSA)创建的,以满足不同群体的科学家在不同工程项目领域之需要。
关于HDF5的介绍,请查看HDF5的官方页面。和参考此文:科学存储数据格式-HDF5
此外,HDF5提供了JAVA接口,下面是java使用HDF5的一些注意事项和相关代码。
1.Eclipse配置
到hdf5的安装文件夹下面,把jarhdf5.jar, slf4j-api.jar,slf4j-simple.jar 添加到功能lib目录,同时把hdf5_java.dll文件添加到一个目录X。注意,在此过程中,添加且只添加这三个文件,第四个slf4j-nop-1.7.5.jar暂时不使用。
HDF5为C++ native的第三方库,按照引入库的一般步骤加入Eclipse工程。windows->preference->java->userLIbraries->new。自行添加库的名字。我的名字是HDF5。
然后在新建的用户库里面,Add JARS,添加jarhdf5.jar, slf4j-api.jar,slf4j-simple.jar三个文件,并在jarhdf5.jar下面配置Native library location,链接到X目录,用以调用Native动态库hdf5_java.dll。
然后在工程的源码文件中,引入hdf5的包。
例如:
import hdf.hdf5lib.H5;
import hdf.hdf5lib.HDF5Constants;
2.读取HDF5文件
初次使用,使用了C++写入的文件,测试读取,可运行代码如下:
public static void main(String[] args) {
String fname = "D:/dataSet/RecoSys/JavaTest/HDF5DatasetRead.h5";
// private static
String dsname = e = "training_data";
try {
// create the HDF5 file and add groups and dataset into the file
//save_to_file(fname, dsname, dims2D);
} catch (Exception ex) {
ex.printStackTrace();
}
// 测试读出
try {
load_from_file(fname, dsname);
} catch (Exception ex) {
ex.printStackTrace();
}
}
load函数:
public static int load_from_file(String fname, String dsname) throws Exception {
//读取先后使用了fileID,SpaceID,DatasetID
long file_id = -1;
long space_id = -1;
long dataset_id = -1;
// Open file using the default properties.
try {
file_id = H5.H5Fopen(fname, HDF5Constants.H5F_ACC_RDWR, HDF5Constants.H5P_DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}
// Open dataset using the default properties.
try {
if (file_id >= 0)
dataset_id = H5.H5Dopen(file_id, dsname, HDF5Constants.H5P_DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}
// Allocate array of pointers to two-dimensional arrays (theelements of the dataset.
int l = 20;
int w =20;
long[] dims = {0,0};
long[] dims2 = {0,0};
//获取
space_id = H5.H5Dget_space(dataset_id);
H5.H5Sget_simple_extent_dims(space_id,dims,dims2);
l= (int)dims[0];
w= (int)dims[1];
int[][] dataRead = new int[l][w];
try {
if (dataset_id >= 0)
H5.H5Dread(dataset_id, HDF5Constants.H5T_NATIVE_INT, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL,
HDF5Constants.H5P_DEFAULT, dataRead);
} catch (Exception e) {
e.printStackTrace();
}
// print out the data values
System.out.println("\n\nOriginal Data Values");
for (int i = 0; i < l; i++) {
System.out.print("\n" + dataRead[i][0]);
for (int j = 1; j < w; j++) {
System.out.print(", " + dataRead[i][j]);
}
}
}
实现把数据读取到dataRead中。
3.保存HDF5文件
..............待完成..................
Android:JAVA使用HDF5存储的更多相关文章
- Android笔记——Android中数据的存储方式(二)
我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...
- Android笔记——Android中数据的存储方式(一)
Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...
- Android中的数据存储
Android中的数据存储主要分为三种基本方法: 1.利用shared preferences存储一些轻量级的键值对数据. 2.传统文件系统. 3.利用SQLite的数据库管理系统. 对SharedP ...
- Android五种数据存储方式
android 五种数据存储 :SharePreferences.SQLite.Contert Provider.File.网络存储 Android系统提供了四种存储数据方式.分别为:SharePre ...
- Android中的数据存储(二):文件存储 2017-05-25 08:16 35人阅读 评论(0) 收藏
文件存储 这是本人(菜鸟)学习android数据存储时接触的有关文件存储的知识以及本人自己写的简单地demo,为初学者学习和使用文件存储提供一些帮助.. 如果有需要查看SharedPreference ...
- Android——几种数据存储应用浅谈
(1)android中的数据存储主要有五种方式: 第一种.sharedPreferences存储数据, 适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配 ...
- .NET/android/java/iOS AES通用加密解密(修正安卓)
移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输.今天研究了一下,把几种语言的加密都 ...
- Android应用开发SharedPreferences存储数据的使用方法
Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的 ...
- Android java传递int类型数组给C
接着前面的文章<Android java传递int类型数据给C><Android java传递string类型数据给C>,继续实践 实现public native int[] ...
随机推荐
- copy contents of file with variable number in Matlab
input : transient.case output: transient_1.case, transient_2.case, transient_3.case ... ************ ...
- Huawei-R&S-网络工程师实验笔记20190524-VRP的系统、接口视图下基本操作
>Huawei-R&S-网络工程师实验笔记20190524-VRP的系统.接口视图下基本操作(重命名.配置IP.VLAN接口.双工模式.console口) >>实验开始,先上 ...
- OpenStack命令行工具与API
Openstack命令行工具 我们推荐Openstack命令行工具和Openstack的Dashboard两者结合使用.一些用户由于使用过其他云技术背景的,可能会使用EC2兼容的API,相对于我们需要 ...
- Expanding Rods POJ 1905 二分
Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 17050 Accepted: 4503 Description When ...
- BZOJ——T 1801: [Ahoi2009]chess 中国象棋
http://www.lydsy.com/JudgeOnline/problem.php?id=1801 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: ...
- EC2:将80端口直接转向8080端口
当安装Tomcat后,需要将服务器的80端口直接指向8080端口,做法如下:1. 确认当前状态.在终端键入:netstat –ntl命令.输入结果应该和下面图片类似.可以看到8080端口处于监听 ...
- [Windows]_[0基础]_[Release程序的崩溃报告minidump解决方式]
场景: 1. Release的程序崩溃时,崩溃报告能够让开发者查明代码哪里出了问题,用处大大的. 2. 仅仅实用VS的编译器才支持,所以MinGW就无缘了. 3. 使用了未处理异常过滤处理函数. 4. ...
- Oracle 堵塞(blocking blocked)
堵塞是DBA常常碰到的情形,尤其是不良的应用程序设计的堵塞将导致性能严重下降直至数据库崩溃. 对DBA而言,有必要知道怎样定位到当前系统有哪些堵塞,究竟谁是堵塞者,谁是被堵塞者.本文对此给出了描写叙述 ...
- selenium IDE 回放报错
解决:Selenium RC未启动,启动即可. java -jar selenium-server-standalone-2.25.0.jar 启动RC报错,提示找不到firefox的path,于是配 ...
- CON1023 明明的计划
比赛说明 邀请码:a08f 来源:自出 描述:无 难度:NOIP提高组day1 赛时答疑:私信询问 奖励:无 试题列表 赛题 #A:数学题赛题 #B:明明泡妹子赛题 #C:明明去酒店 U5012 数学 ...