开源项目--JCIFS


CIFS (Common Internet File System) 
html

  通用Internet文件系统
java

  在windows主机之间进行网络文件共享是经过使用微软公司本身的CIFS服务实现的。 
windows

  CIFS 是一个新提出的协议,它使程序能够访问远程Internet计算机上的文件并要求此计算机的服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器得到请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议(见最后的名词解释)如今是局域网上用于服务器文件访问和打印的协议。象SMB协议同样,CIFS在高层运行,而不象TCP/IP协议那样运行在底层。CIFS能够看作是应用程序协议如文件传输协议和超文本传输协议的一个实现。 浏览器

  CIFS 可使您达到如下功能: 
安全

  1.访问服务器本地文件并读写这些文件 
服务器

  2.与其它用户一块儿共享一些文件块 
网络

  3.在断线时自动恢复与网络的链接 
session

  4.使用西欧字符文件名 
多线程

  通常来讲,CIFS使用户获得比FTP更好的对文件的控制。它提供潜在的更直接地服务器程序接口,这比使用HTTP协议的浏览器更好。CIFS最典型的应用是windows用户可以从“网上邻居”中找到网络中的其余主机并访问其中的共享文件夹.
app

  CIFS 是开放的标准并且已经被做为Internet应用程序标准被提交到IETF。

JCIFS是CIFS 在JAVA中的一个实现,是samba组织负责维护开发的一个开源项目,专一于使用java语言对cifs协议的设计和实现。他们将jcifs设计成为一个完整的,丰富的,具备可扩展能力且线程安全的客户端库。这一库能够应用于各类java虚拟机访问遵循CIFS/SMB网络传输协议的网络资源。相似于java.io.File的接口形式,在多线程的工做方式下被证实是有效而容易使用的。

  JCIFS的开发方法相似java的文件操做功能,它的资源url定位:smb://{user}:{password}@{host}/{path},smb为协议名,user和password分别为共享文件机子的登录名和密码,@后面是要访问的资源的主机名或IP地址。最后是资源的共享文件夹名称和共享资源名。例如 smb://administrator:122122@192.168.0.22/test/response.txt。

  在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方法,你能够从这个流中读出远程文件所有的内容。

  jcifs可从http://jcifs.samba.org/下载,下面是一个简单的例子: 

  import jcifs.smb.SmbFileInputStream; 

  import jcifs.smb.SmbFile; 

  public class ReadShareFile { 

  public static void main(String[] args) { 

  try{ 

  SmbFile smbFile=new SmbFile("smb://test:test@10.218.100.12/share2/aa.txt"); 

  //经过 smbFile.isDirectory();isFile()能够判断smbFile是文件仍是文件夹 

  int length=smbFile.getContentLength();//获得文件的大小 

  byte buffer[] = new byte[length] ; 

  SmbFileInputStream in = new SmbFileInputStream(smbFile) ; //创建smb文件输入流 

  while((in.read(buffer)) != -1){ 

  System.out.write(buffer); 

  System.out.println(buffer.length); 

  } 

  in.close(); 

  }catch(Exception e){ 

  e.printStackTrace(); 

  } 

  } 


  }

名词解释:

SMB(Server Message Block):通讯协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是做为Microsoft网络的通信协议。SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API)。另外,它是一个开放性的协议,容许了协议扩展——使得它变得更大并且复杂;大约有65个最上层的做业,而每一个做业都超过120个函数,甚至Windows NT也没有所有支持到,最近微软又把 SMB 更名为 CIFS(Common Internet ile System),而且加入了许多新的特点。


JAVA中使用jcifs集成AD域用户认证

相关文章
相关标签/搜索