知识大全 JAVA远程访问共享目录

Posted 文件

篇首语:万事须己运,他得非我贤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JAVA远程访问共享目录相关的知识,希望对你有一定的参考价值。

JAVA远程访问共享目录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   相关知识介绍

   SMB

  Microsoft网络配置中主要采用SMB形式实现文件共享和打印服务 SMB(服务器消息块)是一种客户端/服务器文件共享协议 IBM于 世纪 年代末期开发了服务器信息块(SMB) 用于规范共享网络资源(如目录 文件 打印机以及串行端口)的结构 这是一种请求/响应协议 与FTP协议支持的文件共享不同 SMB协议中的客户端要与服务器建立长期连接 一旦建立连接 客户端用户就可以访问服务器上的资源 就如同资源位于客户端主机上一样

  从Windows 系列软件开始 Microsoft修改了软件的基础结构 使其适用SMB协议 而在以前的Microsoft产品中 SMB服务需要使用非TCP/IP协议族来执行域名解析 从Windows 开始 Microsoft的所有产品都采用DNS系统 由此 TCP/IP协议族可以直接支持SMB资源共享

  SMB协议中规定了文件系统访问和客户如何请求文件的方式以及SMB协议进程间通信的方式 所有的SMB消息都采用一种格式 该格式采用固定大小的文件头 后跟可变 <script src= _mce/themes/advanced/langs/zh js type= text/javascript ></script><script src= _mce/plugins/syntaxhl/langs/zh js type= text/javascript ></script> 大小的参数以及数据组件

   jcifs

  Jcifs <script src= _mce/themes/advanced/langs/zh js type= text/javascript ></script><script src= _mce/plugins/syntaxhl/langs/zh js type= text/javascript ></script> pan>是一个用JAVA开发的SMB客户端库 利用jcifs可以操作windows共享文件 可以得到域用户 实现单点登录 最新版本为 官方网址

   代码实现

  package uploadSMB;

  import java io BufferedInputStream;

  import java io BufferedOutputStream;

  import java io File;

  import java io FileInputStream;

  import java io FileOutputStream;

  import java io IOException;

  import java io InputStream;

  import java io OutputStream;

  import jcifs smb SmbFile;

  import jcifs smb SmbFileInputStream;

  import jcifs smb SmbFileOutputStream;

  public class UploadDownloadUtil

  /**

  * Description: 从共享目录拷贝文件到本地

  * @Version Sep : : PM

  * @param remoteUrl 共享目录上的文件路径

  * @param localDir 本地目录

  */

  public void smbGet(String remoteUrl String localDir)

  InputStream in = null;

  OutputStream out = null;

  try

  SmbFile remoteFile = new SmbFile(remoteUrl);

  if(remoteFile==null)

  System out println( 共享文件不存在 );

  return;

  

  String fileName = remoteFile getName();

  File localFile = new File(localDir+File separator+fileName);

  in = new BufferedInputStream(new SmbFileInputStream(remoteFile));

  out = new BufferedOutputStream(new FileOutputStream(localFile));

  byte[] buffer = new byte[ ];

  while(in read(buffer)!= )

  out write(buffer);

  buffer = new byte[ ];

  

   catch (Exception e)

  e printStackTrace();

   finally

  try

  out close();

  in close();

   catch (IOException e)

  e printStackTrace();

  

  

  

  /**

  * Description: 从本地上传文件到共享目录

  * @Version Sep : : PM

  * @param remoteUrl 共享文件目录

  * @param localFilePath 本地文件绝对路径

  */

  public void smbPut(String remoteUrl String localFilePath)

  InputStream in = null;

  OutputStream out = null;

  try

  File localFile = new File(localFilePath);

  String fileName = localFile getName();

  SmbFile remoteFile = new SmbFile(remoteUrl+ / +fileName);

  in = new BufferedInputStream(new FileInputStream(localFile));

  out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));

  byte[] buffer = new byte[ ];

  while(in read(buffer)!= )

  out write(buffer);

  buffer = new byte[ ];

  

   catch (Exception e)

  e printStackTrace();

   finally

  try

  out close();

  in close();

   catch (IOException e)

  e printStackTrace();

  

  

  

  public static void main(String[] args)

  UploadDownloadUtil test = new UploadDownloadUtil() ;

  // smb:域名;用户名:密码@目的IP/文件夹/文件名 xxx

  //test smbGet( smb://szpcg;jiang t:xxx@ /Jake/test txt c:// ) ;

  test smbPut( smb://szpcg;jiang t:xxx@ /Jake c://test txt ) ;

  

  

   remoteUrl说明

  remoteUrl如何填写是值得注意的

  如果是无需密码的共享 则类似如下格式

  smb://ip/sharefolder(例如 smb:// /test)

  如果需要用户名 密码 则类似如下格式

  Smb://username:password@ip/sharefolder(例如 smb://chb: @ /test)

  // smb:域名;用户名:密码@目的IP/文件夹/文件名 xxx

  //test smbGet( smb://szpcg;jiang t:xxx@ /Jake/test txt c:// ) ;

cha138/Article/program/Java/hx/201311/26941

相关参考

知识大全 Java访问windows活动目录(1)

Java访问windows活动目录(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  活动目录

知识大全 Java访问windows活动目录(2)

Java访问windows活动目录(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  //获取

知识大全 java间的线程通信

  不同线程间进行通信通常有两种简单方法  方法一通过访问共享变量的方式(注需要处理同步问题)  方法二通过管道流  其中方法一有两种实现方法即  方法一a)通过内部类实现线程的共享变量  代码如下 

知识大全 java的volatile与多线程

  Java语言规范中指出为了获得最佳速度允许线程保存共享成员变量的私有拷贝而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比  Volatile修饰的成员变量在每次被线程访问时都强迫从

知识大全 TCP/IP远程访问操作

TCP/IP远程访问操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  TCP/IP网络通信软件

知识大全 解决PHP无法访问远程mysql的问题

解决PHP无法访问远程mysql的问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  说明远程服

知识大全 设置sqlplus访问远程oracle数据库的方法

  如果要连接远程数据库传统的一定可行的方法是在本地装一个oracle然后使用NeorkConfigurationAssistant配置之后用PL/SQLDev连接  oracle官网上提供了最小访问

知识大全 win7带网络的安全模式无法连接网络,提示无法加载远程访问连接管理器服务,错误711

win7带网络的安全模式无法连接网络,提示无法加载远程访问连接管理器服务,错误711从微软官网上找到的推荐解决方案如果禁用了下列服务,可能会发生此问题:电话服务远程访问连接管理器远程访问自动连接管理器

知识大全 为什么我家机子一宽带连接就出现无法加载远程访问连接管理器服务

为什么我家机子一宽带连接就出现无法加载远程访问连接管理器服务按住CRTL+R输入SERVICES.MCS找到远程连接管理服务,看看有没有开启服务,服务有没有被禁用。笔记本电脑为什么会出现无法加载远程访

知识大全 利用ASP.NET访问共享网络资源

利用ASP.NET访问共享网络资源  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对于许多ASP