用java访问共享文件系统_在Java程序中访问Windows共享文件系统

本文介绍了如何使用Java通过JCIFS库访问Windows共享文件系统。在Java程序中,由于标准的File类无法处理跨机器的认证,因此需要使用JCIFS提供的SmbFile类。示例代码展示了如何读取远程文件,并强调了正确配置SMB URL进行身份验证的重要性。
摘要由CSDN通过智能技术生成

本文涉及的几个关键字解释:

SMB: Server Message Block, 用于共享例如文件、打印机、串口或者是命名管道等用于通讯的抽象对象;

CIFS:  Common Internet File System,  SMB的增强版,Windows 2000/XP实现了该协议;

JCIFS: 一个实现了CIFS的纯Java项目,无须任何的本地库。

下面我们看一个非常简单的例子,在运行这个例子之前必须准备两台机器A、B,其中我们A是我们程序运行所在的机器,而B则是被访问的机器,仅用B上的Guest用户,而且A当前的用户不能存在于B机器中,也就是说当我们通过资源管理器访问 \\B 的时候,会要求输入用户名以及口令,如下图所示:

200408240313340031.jpg

这个时候A机器上的程序就不能通过例如 \\B\folder\1.txt 这样的路径来访问B机器上共享文件夹folder中的1.txt文件,也就是说Java中自带的File,FileInputStream类已经不起作用了,不信? 不信你丫试试

04.gif

但是借助于JCIFS你就可以很容易的访问到文件1.txt的内容,我们先来看这个简单的例子:

import jcifs.smb.*;

public class Demo{

public static void main(String[] args) throws Exception{

//将user和password换成是B机器上的用户名以及口令

SmbFileInputStream in = new SmbFileInputStream("smb://user:password@B/folder/1.txt" );

byte[] b = new byte[8192];

int n;

while(( n = in.read( b )) > 0 ) {

System.out.write( b, 0, n );

}

}

}

编译并运行这面的例子便可以打印文件 1.txt 的内容。

把上面例子中的密码填写成一个错误的密码再运行程序,便会得到 jcifs.smb.SmbAuthException 异常。

写文件也是一个道理,关于文件的操作JCIFS提供了这么几个类:SmbFile,SmbFileInputStream,SmbFileOutputStream,具体的用户跟Java中对应的类差不多。

JCIFS中文件的URL也就是smb_url,格式为:smb://{user}:{password}@{host}/{path} ,只要填好这个URL,JCIFS就会帮你搞定身份验证的事,粉简单的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值