PC机下实现java对文件系统功能调用

2014-09-24 19:11王宏浩富强徐东晨
无线互联科技 2014年7期

王宏浩 富强 徐东晨

摘要:随着时代的发展和科技的进步,Internet技术也得到了快速的发展。在这样的条件下,java语言以其所独有的特点,被广泛应用于多种设备、网络和计算机中。尽管java可以跨平台,具有良好的可移植性,但是PC机上,尤其是WINDOWS系统下,要通过java实现对系统文件的调用则较为困难。论文结合笔者研究,阐述了如何利用已经写好的FATFS文件系统C代码,在JNI技术基础上实现PC机上文件系统功能的调用。

关键词:SOA;文件系统;JNI;读文件;写文件1JNI技术

使用JNI技术的最终目的就是为了能够在完成编写头文件和本地程序的基础上,再借助C/C++文件生成一个动态库文件,然后将其加载至Java程序中,确保其成功运行。具体步骤可以分为以下五步:第一,构建Java工程,编写相应的Java代码。在这一环节中,首要任务是将需要定义的动态库名称加载至Java类中,并且需要确定本地方法。第二,编写并执行.bat文件,从而生成与Java代码相对应的头文件。第三,编写本地代码,以保证Java可以与C/C++数据文件之间的相互转换。第四,编译本地代码,从而生成DLL或者.SO文件。第五,加载已生成的动态库文件至Java代码之内,并将Java程序运行。

2SOA三层构架下FATFS文件系统的移植

SOA即Service-Oriented Architecture,是面向服务的体系结构,它的出现解决了如何提高系统的扩展性的问题。通过SOA的三层构架,有效的解决了诸多问题。这可以从两个方面分析,即逻辑层的SOA三层构架以及实现层SOA三层构架。

2.1 逻辑层SOA三层构架

逻辑层SOA三层构架的主要作用就是确保业务需求与系统的分离。根据不同的应用方式,SOA可以实现不同语义层定义相应的应用协议语言。这样就可以实现针对特定应用系统的系统需求映射,从而达到将业务需求与系统之间的衔接的目的。逻辑层SOA三层构架是针对FATFS文件系统之间的底层驱动函数。一般来说FATFS文件系统有六个接口函数与硬件层相对应,即磁盘初始化、获取当前磁盘的状态、写扇区、读扇区、获取当前时间以及存储介质控制函数。

2.2 实现层SOA三层构架

这与逻辑层SOA三层构架相对应,引擎映射对应概念模型需求层;流程映射对应逻辑模型语义层;构建映射对应物理模型服务层。

因为论文内实现的PC机下Java对文件系统功能的调用是基于Java调用C而实现的,那么逻辑层SOA三层构架内的服务层之中的底层函数是与实现层的构件池相对应的,而实现层的引擎则是Java,这样通过Java引擎就可以在调用文件系统流程的过程中生成的动态库文件达到实现文件系统的目的。

3PC机下Java对文件系统功能调用

通过对前面SOA三层构架的分析,并在此基础上实现了FATFS文件系统的移植,接下来就可以实现通过Java对PC机下文件系统功能的调用。为了便于实现和测试,笔者所采用的测试平台为VC++以及eclipse平台。具体实验流程如下所述:

第一步,构建Java工程Rename,其中设置其包名为filesystem,类FileSystem。

第二步,在代码FileSystem.java中声明本地方法。

其中:①函数表示对文件的重命名,path_old表示文件名,而path_new则代表修改以后的文件名;

②函数则表示需要根据路径来读取相应的文件夹,代码String path文件夹;

③函数则代表按照path的路径进行文件数据的写入;

④函数意为读取相应路径内的文件夹的内容;

⑤函数表示读取路径写文件的相关信息,诸如文件的创建时间等;

⑥函数指需要为path路径创建一個文件夹;

⑦函数指将该路径下文件夹的属性改变。

第三步,加载动态库,其语句为

static

{

System.loadLibrary("renamel");

}

Renamel即表示动态库的名字,这样Java就可以凭借调用上述中介DLL的方式,间接地达到调用真正第三方DLL的目的。

第四步,通过编译,从而生FileSystem.class文件。

第五步,编写执行.bat文件,这样就可以生成与Java代码相对应的头文件,即filesystem_FileSystem.h。

第六步,通过VC6.0编译器,就能够生成renamel.dll文件。

这样一来就实现了在PC机下Java对文件系统功能的调用。

4结语

综上所述,在PC机下实现Java对文件系统功能的调用是一个复杂的过程,需要涉及到众多方面。而JNI技术保障这一功能实现的前提。为了实现这一目的,就必须了解和掌握JNI技术需要的软件和平台,并在此基础上分析FATFS文件系统的结构基础,并最终借助SOA的三层构架实现对PC上的FATFS系统文件的移植。最后,凭借JNI技术,即可实现WINDOWS系统下Java对文件系统功能的调用。

[参考文献]

[1]常青,张刚,王耀力.SOA三层构架在嵌入式文件系统上的实现[J].太原理工大学学报,2011(03).