package com.project.remoteUrl;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;

import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileOutputStream;

public class RemoteUrl {
 //注意jcifs-1.3.15.jar 需要 远程计算机在局域网内,并且开启共享磁盘权限
 /*
  *  Description: 从本地上传文件到共享目录
  *  @param remoteUrl 共享文件目录
  *  @param localFilePath 本地文件绝对路径
  */
 public void smbPut(String remoteUrl,String localFilePath){
  InputStream in = null;
  OutputStream out = null;
  try{
   //创建file类 传入本地文件路径
   File localFile = new File(localFilePath);
   //获得本地文件的名字
   String fileName = localFile.getName();
   //将本地文件的名字和远程目录的名字拼接在一起
   //确保上传后的文件于本地文件名字相同
   SmbFile remoteFile = new SmbFile(remoteUrl+"/"+fileName);
    //创建读取缓冲流把本地的文件与程序连接在一起
   in = new BufferedInputStream(new FileInputStream(localFile));
   //创建一个写出缓冲流(注意jcifs-1.3.15.jar包 类名为Smb开头的类为控制远程共享计算机"io"包)
   //将远程的文件路径传入SmbFileOutputStream中 并用 缓冲流套接
   out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
   //创建中转字节数组
   byte[] buffer = new byte[1024];
   while(in.read(buffer)!=-1){//in对象的read方法返回-1为 文件以读取完毕
    out.write(buffer);
    buffer = new byte[1024];
   }
  }catch(Exception e){
   e.printStackTrace();
  }finally{
   try{
    //注意用完操作io对象的方法后关闭这些资源,走则 造成文件上传失败等问题。!
    out.close();
    in.close();
   }catch(Exception e){
    e.printStackTrace();}
  }
 }
 /* 在本地为共享计算机创建文件夹
  * @param remoteUrl 远程计算机路径
 */
 public void smbMkDir(String remoteUrl){
  try{
   //注意使用jcifs-1.3.15.jar的时候 操作远程计算机的时候所有类前面须要增加Smb
   //创建一个远程文件对象
   SmbFile remoteFile = new SmbFile(remoteUrl+ File.separator + "123");
  
   if(!remoteFile.exists()){
     //创建远程文件夹
     remoteFile.mkdir();
    }
  }catch(Exception e){
   e.printStackTrace();
  }
 }

/**
  * @param args
  */
 public static void main(String[] args) {
 
  RemoteUrl test = new RemoteUrl();
  //注意: 创建远程文件的远程文件路径需要按以下格式写。 如我的ip为172.16.50.38 我需要在d盘创建一个叫Scan6C的文件夹
  test.smbMkDir("smb://172.16.50.38/d/Scan6C");
  //如远程计算机有用户名和密码的限制的话 请按一下格式填写 smb://{user}:{password}@{host}/{path}
  test.smbPut("smb://aaa:bb@172.16.50.38/Scan6C", "c://test.txt") ;
 }

}

通过jcifs.jar 创建远程文件和文件夹的更多相关文章

  1. maven本地安装jar包同时生成pom文件

    maven 本地安装jar包:mvn install:install-file -Dfile=本地路径/ojdbc12.jar -DgroupId=com.oracle -DartifactId=oj ...

  2. 使用dom4j创建和解析xml文件

    使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ...

  3. Java程序如何生成Jar、exe及安装文件

    http://blog.csdn.net/luoweifu/article/details/7628006/ 一.用Eclipse生产Jar文件 首先,看一下我的项目的目录结构: 1,项目名字上面点右 ...

  4. java 从jar包中读取资源文件

    在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...

  5. Java创建、重命名、删除文件和文件夹(转)

    Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方 ...

  6. (转)java 从jar包中读取资源文件

    (转)java 从jar包中读取资源文件 博客分类: java   源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...

  7. Tomcat下使用C3P0配置JNDI数据源(在项目的META-INF目录下创建context.xml的文件)

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar 下载完成之后得到一个压缩包

  8. 【Android Studio安装部署系列】十七、Android studio引用第三方库、jar、so、arr文件

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在Android开发过程,经常需要用到第三方库以及jar.so.arr文件,那么如何引用到项目中呢?下面简单介绍下. 引用第三方库 ...

  9. springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置

    前面主要是后台代码,spring以及mybatis的整合 下面主要是springmvc用来处理请求转发,展现层的处理 之前所有做到的,完成了后台,业务层和持久层的开发完成了 接下来就是展现层了 有很多 ...

随机推荐

  1. 帝国cms刷洗内容页提示.phome_ecms_news_data_' doesn't exist

    帝国cms后台刷新提示.phome_ecms_news_data_' doesn't exist解决方法: 刷新所有信息内容页面时提示“Table '*.phome_ecms_article_data ...

  2. sharepoint mysite and upgrade topics

    My Sites overview (SharePoint Server 2010)http://technet.microsoft.com/en-us/library/ff382643(v=offi ...

  3. JDBC增删改查

    /* db.properties的配置 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/day14 username=root ...

  4. C++(MFC)编程一些注意事项

    一·书写问题 1.括号:左右大括号最好都放在左侧,这样可以很清楚大括号的看清配对情况以及作用域,便于检查也不易出错. 2.强制转换:强制转换表达式时一定要加括号,否则可能只转换了表达式中的单个量,可能 ...

  5. 关于 iOS 刷新效果实现的思路 和 mac软件网址推荐

    有一次面试,突然有个人问了我一个问题:MJRefresh的原理是什么? 我说这种效果可以有两种方法实现: 1.  UIRefreshControl 2.  通过监听scrollview的偏移量,自定义 ...

  6. UIGestureRecongnizer 手势拦截

    在一个scrollview添加了一个tap的手势事件,然后在scrollview上添加了几个Button,在ios6,ios7 中两个点击事件相安无事,但在ios5中按钮却无法点击,究其原因是因为在i ...

  7. window对象的属性方法名造成的命名冲突

    事件起因: 一次开发中需要获取一个数组的长度,写下如此代码 function func(arr){ length = arr.length; ......//相关操作 } 程序在chrome下正常运行 ...

  8. win8 telnet VirtualBox中的redhat9

    1. VirtualBox设置网络连接为“桥接网卡”,并且此网卡要为win8正在使用的网卡(比如我的电脑上使用的就是无线网卡,则选择网卡时也要用无线网卡) 2. 在redhat的终端里,运行ifcon ...

  9. vs2008调试提示:未安装Silverlight托管调试包

    换个启动浏览器,解决了. 右击项目,选择“属性”,选择"web";启动操作设置“启动外部程序”,填入浏览器exe的路径. 命令行参数填入地址.即可.

  10. md RAID

    md: mdadm: 将任何块设备做成RAID 模式化的命令:1.创建模式 -C 专用选项: -l: 级别 -n #: 设备个数 -a {yes|no}: 是否自动为其创建设备文件 -c: CHUNK ...