用JAVA访问共享文件系统

关于作者

薛谷雨是nordsan(北京)信息科技开发有限公司高级java研发工程师,正致力于企业级异构数据交换的服务器产品的研发,在j2ee和web service方面有较为丰富的开发经验,你可以通过 rainight@126.com 与他取得联系。

前言

在microsoft 网 络 系 统 中,smb(server message block, 服 务 信 息 块) 协 议 是windows for workgroup(wfwg)、windows 95、windows nt 和lanmanager 用 来 实 现 共 享 局 域 网 上 文 件 和 打 印 机 的 协 议。 对 于 利 用linux 和windows nt 构 建 的 局 域 网 来 说,samba 就 是 为linux 提 供 的smb 客 户 程 序/ 服 务 器 程 序 的 软 件 包, 其 功 能 是 实 现windows 和linux 互 相 共 享 对 方 的 磁 盘 空 间 和 打 印 机。通用网络文件系统简称cifs,它事实上是windows平台文件共享的标准协议,它是windows explorer,网络邻居和映射网络驱动器的底层实现协议。java具有天然的平台无关性,使用java可以访问任何类型的服务器或客户机上的共享文件系统,并且编写的软件产品可以运行于任何平台,因此用java访问共享文件系统在企业应用中具有得天独厚的优势。

java中的cifs实现

jcifs是cifs在java中的一个实现,是samba组织本着linux的精神,负责维护开发的一个开源项目。这个项目专注于使用java语言对cifs协议的设计和实现。他们将jcifs设计成为一个完整的,丰富的,具有可扩展能力且线程安全的客户端库。这一库可以应用于各种java虚拟机访问遵循cifs/smb网络传输协议的网络资源。类似于java.io.file的接口形式,在多线程的工作方式下被证明是有效而容易使用的。目前jcifs的最新版本是jcifs-0.8.0b,你可以在本文最后列出的参考资料中获得下载这一类库的网址,这一版本还支持分布式的文件系统,本文尚不涉及这一内容。

java/cifs程序设计

如果你曾经使用过java的文件操作功能,那么你将很容易掌握jcifs的开发方法。jcifs通过类似如下的资源url定位一个资源:

smb://guest:1234@192.168.3.56/share/a.txt

这个url的开始部分smb:// 说明了这是一个smb类型的url;接下来的guest和1234分别是访问共享资源的用户名称和密码;@后面是要访问的资源的主机名或ip地址。最后是资源的共享文件夹名称和共享资源名。

在java程序中,使用如下方式获得一个远程共享文件的句柄:

smbfile file = new smbfile("smb://guest:1234@192.168.3.56/share/a.txt");

这里的句柄不仅限于远程的共享文件,还可能是共享文件夹。isfile()方法和isdirectory()用来判断这个句柄对应的资源的真实属性。如果是共享文件夹,通过调用它的list()方法将获得其中资源的列表。list方法支持过滤器机制,有两种过滤器可供使用,一种是smbfilefilter,另一种是smbfilenamefilter,这两个在jcifs中作为接口出现,你可以根据自己的需要派生出个性化的过滤器,实现接口中的accept方法,以满足不同业务的需求。

smbfileinputstream是smb文件的输入流,它的功能是以流的方式打开一个smbfile:

smbfileinputstream in = new smbfileinputstream(file);

smbfileinputstream提供read方法,你可以从这个流中读出远程文件全部的内容。

至此,你已经掌握了java访问smb文件系统的基本方法。

smbfileoutputstream是smb文件的输入流,可以向远程文件系统通过smb写入数据,方法与上面类似,不再赘述。

本文后面附带的源代码是一个完整的例子,它完成功能很简单,就是将另一台电脑上指定共享文件夹下的某些文件拷贝到本机的指定目录下。通过这个例子,相信你很容易将它移植到你的开发产品中。

第一步,设置运行环境。将源代码解压缩,将lib目录下的名称为jcifs-0.8.0b.jar的文件加入到你的操作系统的classpath中,使示例程序运行时能够找到这个库。

第二步,在另一台计算机上建立名称为share的共享文件夹,用户名为guest,密码也为guest。假设这台计算机的ip地址是192.168.0.2。

第三步,在刚才建立的共享文件夹下放置两个文件,名称分别为hello.txt,bye.txt。文件的内容无所谓。

第三步,在本地计算机上的c盘跟目录下建立一个名称为tmp的空目录,置此目录可写。

第四步,编译运行sample1.java,并运行:

java sample1 192.168.3.52 guest guest /share/ c:/tmp/

检查c:\tmp文件夹,会发现hello.txt这个文件被复制到了本机,而bye.txt没有被复制,因为sample1.java中使用了过滤器,仅允许名称为hello开头的文件被拷贝。

后记

对共享文件系统的访问是内部办公系统等涉及到文件迁移的软件产品开发过程中不可回避的课题,jcifs是一套针对这一课题完整而强大的解决方案,通过它你可以实现对任何共享文件系统的访问。

一些有用的资源和参考资料

本文的全部源代码,可编译运行,供读者研究,下载源代码

如欲了解更多关于jcifs的信息,请访问其官方网站 http://jcifs.samba.org/

您可以在 http://users.erols.com/mballen/jcifs/ 获得jcifs库的最新版本。

如果你对smb还不是十分熟悉,这里有一篇不错的文章将向你介绍什么是smb:http://samba.anu.edu.au/cifs/docs/what-is-smb.html


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
与本课题相关的技术和方法综述: 系统将采用JSP、SQL Server 2008、JDBC、JavaScript技术来进行设计,具体如下: (1)JSP JSP是一种动态网页开发技术,主要用于实现应用程序的登录界面和资源信息等界面。JSP标签可以访问数据库、记录用户选择信息。 JSP可以直接在HTML网页中动态嵌入元素而不需要单独引用CGI文件。本系统将采用JSP技术,运用HTML和CSS实现各个功能的网页界面,与对应的java程序连接实现各个功能。 (2)SQL Server SQL Server具有使用方便可伸缩性好与相关软件集成程度高等优点,本系统将采用SQL Server技术建立多个数据库表用来记录学生的账号信息、管理员信息、学生个人共享的学习资源和所有学生共享的学习资源。 (3)JDBC JDBC是一种用于执行SQL语句的Java API,有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。本系统将采用JDBC技术实现Java程序与SQL Server之间的链接,可以通过程序来对数据库进行学生共享学习资源、学生查询学习资源、管理员对学习资源增删改查等操作。 (4)JavaScript JS具有跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(WindowsLinux、Mac、Android、iOS等),在本设计中将用JS做一些动态交互和事件响应效果。 山西大学商务学院毕业论文(设计)开题报告 主要设计内容: 设计内容主要包括系统需求分析、功能分析、数据库设计、系统测试主要内容,具体如下: 1、系统需求分析 学习资源共享系统是一个面闻喜中学学生的共享系统,对于学生来说,可以注册账号然后通过系统向其他学生共享自己的学习资源并可以查看自己的分享历史,也可以查询其他学生分享的学习资源让自己了解更多。对于系统的管理员来说主要是对学生们分享的资源进行一些审查,不合适的资源将进行删除。 2、功能分析 设计的系统主要包括学生共享模块,共享记录模块,留言板,浏览记录模块,管理员模块等功能。 (1)学生的登录模块:学生注册账号密码,账号密码将保存到数据库中,然后学生登录。 (2)学生共享模块:学生对自己想要共享的资源进行录入,录入时对资源进行分类录入,可以在整个资源页面进行搜索,可以模糊搜索。 (3)共享记录模块:学生可以查看自己共享的记录,可以删除自己不想再共享的资源,也可以修改自己的共享记录。 (4)留言板:学生可以留言自己想要获得的资源,其他学生可以在下面回复他。 (5)浏览记录模块:学生可以查看自己浏览过哪些资源记录,并可以删除它们。 (6)管理员模块:管理员有固定账号密码,可以对所有共享的学习资源进行增删改查。 3、数据库设计 数据库将建立存储管理员账号密码的表和学生账号密码的表,存放资源信息的表、学生个人共享资源的表。 4、系统测试 设计将采用功能测试,进行登录注册功能的测试,验证学生账号密码是否能存进数据库,进行资源的增删改查等操作测试与数据库是否正常连接。在不同的电脑系统上运行程序测试是否可以正常运行。
Java Web文件管理系统是一种基于Java语言开发的网络应用程序,主要用于对文件进行管理和操作。它可以实现文件的上传、下载、浏览、编辑等功能,方便用户在网络上进行文件的管理和共享。 Java Web文件管理系统的开发框架可以选择Spring MVC、Struts2或者Servlet/JSP等。它通常采用MVC设计模式,将业务逻辑、数据存取和用户界面分离,从而提高系统的可维护性和扩展性。 用户可以通过网页浏览器访问Java Web文件管理系统,系统会提供简洁友好的界面,使用户能够方便地进行各种操作。用户可以上传文件服务器,系统将自动生成文件的唯一标识符,并将文件保存在指定的目录中。同时,系统会记录文件的元数据,如文件名、大小、上传时间等信息。 用户可以通过系统提供的搜索功能,根据文件名、上传者、上传时间等条件对文件进行查询,便于快速找到所需的文件。用户还可以设置文件的权限,控制其他用户对文件的访问权限,保护文件的安全性。 在文件下载方面,系统会提供下载链接,用户可以直接下载文件到本地。在文件浏览和编辑方面,系统可以支持各种文件格式,如文本文件、图片、视频等,在浏览器中预览和编辑文件内容。 此外,系统还可以提供文件的版本管理功能,允许用户对文件进行版本控制。用户可以回滚到以前的版本,查看文件的修改记录,方便团队协作和文件的追溯。 总之,Java Web文件管理系统是一个功能强大、易用方便的工具,可以有效管理和共享文件,提高团队的工作效率。通过合理的设计和开发,可以实现更多个性化的功能,满足用户不同的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值