精华内容
下载资源
问答
  • smbfile
    2021-12-08 14:37:49

    }

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (SmbException e) {

    e.printStackTrace();

    }

    }

    三、创建文件夹


    /**

    • 创建文件夹

    • @param remoteUrl

    • @param folderName

    • @return

    */

    public static void smbMkDir(String remoteUrl, String folderName) {

    SmbFile smbFile;

    try {

    // smb://userName:passWord@host/path/folderName

    smbFile = new SmbFile(remoteUrl + folderName);

    if (!smbFile.exists()) {

    smbFile.mkdir();

    }

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (SmbException e) {

    e.printStackTrace();

    }

    }

    四、上传文件


    /**

    • 上传文件

    • @param remoteUrl

    • @param shareFolderPath

    • @param localFilePath

    • @param fileName

    */

    public static void uploadFileToSharedFolder(String remoteUrl, String shareFolderPath, String localFilePath, String fileName) {

    InputStream inputStream = null;

    OutputStream outputStream = null;

    try {

    File localFile = new File(localFilePath);

    inputStream = new FileInputStream(localFile);

    // smb://userName:passWord@host/path/shareFolderPath/fileName

    SmbFile smbFile = new SmbFile(remoteUrl + shareFolderPath + “/” + fileName);

    smbFile.connect();

    outputStream = new SmbFileOutputStream(smbFile);

    byte[] buffer = new byte[4096];

    int len = 0; // 读取长度

    while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {

    outputStream.write(buffer, 0, len);

    }

    // 刷新缓冲的输出流

    outputStream.flush();

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    try {

    outputStream.close();

    inputStream.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    五、下载文件


    /**

    • 下载文件到浏览器

    • @param httpServletResponse

    • @param remoteUrl

    • @param shareFolderPath

    • @param fileName

    */

    public static void downloadFileToBrowse

    《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

    【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

    r(HttpServletResponse httpServletResponse, String remoteUrl, String shareFolderPath, String fileName) {

    SmbFile smbFile;

    SmbFileInputStream smbFileInputStream = null;

    OutputStream outputStream = null;

    try {

    // smb://userName:passWord@host/path/shareFolderPath/fileName

    smbFile = new SmbFile(remoteUrl + shareFolderPath + “/” + fileName);

    smbFileInputStream = new SmbFileInputStream(smbFile);

    httpServletResponse.setHeader(“content-type”, “application/octet-stream”);

    httpServletResponse.setContentType(“application/vnd.ms-excel;charset=UTF-8”);

    httpServletResponse.setHeader(“Content-disposition”, “attachment; filename=” + fileName);

    // 处理空格转为加号的问题

    httpServletResponse.setHeader(“Content-Disposition”, “attachment; fileName=” + fileName + “;filename*=utf-8’’” + URLEncoder.encode(fileName, “UTF-8”).replaceAll("\+", “%20”));

    outputStream = httpServletResponse.getOutputStream();

    byte[] buff = new byte[2048];

    int len;

    while ((len = smbFileInputStream.read(buff)) != -1) {

    outputStream.write(buff, 0, len);

    }

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (SmbException e) {

    e.printStackTrace();

    } catch (UnknownHostException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    finally {

    try {

    outputStream.close();

    smbFileInputStream.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    /**

    • 下载文件到指定文件夹

    • @param remoteUrl

    • @param shareFolderPath

    • @param fileName

    • @param localDir

    */

    public static void downloadFileToFolder(String remoteUrl, String shareFolderPath, String fileName, String localDir) {

    InputStream in = null;

    OutputStream out = null;

    try {

    SmbFile remoteFile = new SmbFile(remoteUrl + shareFolderPath + File.separator + fileName);

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

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

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

    byte[] buffer = new byte[1024];

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

    out.write(buffer);

    buffer = new byte[1024];

    }

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    try {

    out.close();

    in.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    更多相关内容
  • java 通过 SmbFile 类操作共享文件夹

    千次阅读 2021-02-03 21:15:39
    在pom.xml文件夹中添加如下的依赖就可以引用SmbFile类的jar包。 <dependency> <groupId>jcifs</groupId> <artifactId>jcifs</artifactId> <version>1.3.17</version>...

    一、添加依赖

    在pom.xml文件夹中添加如下的依赖就可以引用SmbFile类的jar包。

    <dependency>
           <groupId>jcifs</groupId>
           <artifactId>jcifs</artifactId>
           <version>1.3.17</version>
    </dependency>

    二、读取文件

    /**
      * 读取共享文件夹下的所有文件(文件夹)的名称
      * @param remoteUrl
      */
    public static void getSharedFileList(String remoteUrl) {
        SmbFile smbFile;
        try {
            // smb://userName:passWord@host/path/
            smbFile = new SmbFile(remoteUrl);
            if (!smbFile.exists()) {
                System.out.println("no such folder");
            } else {
                SmbFile[] files = smbFile.listFiles();
                for (SmbFile f : files) {
                    System.out.println(f.getName());
                }
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (SmbException e) {
            e.printStackTrace();
        }
    }

    三、创建文件夹

    /**
     * 创建文件夹
     * @param remoteUrl 
     * @param folderName
     * @return
     */
    public static void smbMkDir(String remoteUrl, String folderName) {
        SmbFile smbFile;
        try {
            // smb://userName:passWord@host/path/folderName
            smbFile = new SmbFile(remoteUrl + folderName);
            if (!smbFile.exists()) {
                smbFile.mkdir();
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (SmbException e) {
            e.printStackTrace();
        }
    }

    四、上传文件

    /**
      * 上传文件
      * @param remoteUrl
      * @param shareFolderPath
      * @param localFilePath
      * @param fileName
      */
    public static void uploadFileToSharedFolder(String remoteUrl, String shareFolderPath, String localFilePath, String fileName) {
        InputStream inputStream = null;
        OutputStream outputStream = null;
        try {
            File localFile = new File(localFilePath);
            inputStream = new FileInputStream(localFile);
            // smb://userName:passWord@host/path/shareFolderPath/fileName
            SmbFile smbFile = new SmbFile(remoteUrl + shareFolderPath + "/" + fileName);
            smbFile.connect();
            outputStream = new SmbFileOutputStream(smbFile);
            byte[] buffer = new byte[4096];
            int len = 0; // 读取长度
            while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
                outputStream.write(buffer, 0, len);
            }
            // 刷新缓冲的输出流
            outputStream.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                outputStream.close();
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    五、下载文件

    /**
      * 下载文件到浏览器
      * @param httpServletResponse
      * @param remoteUrl
      * @param shareFolderPath
      * @param fileName
      */
    public static void downloadFileToBrowser(HttpServletResponse httpServletResponse, String remoteUrl, String shareFolderPath, String fileName) {
        SmbFile smbFile;
        SmbFileInputStream smbFileInputStream = null;
        OutputStream outputStream = null;
        try {
            // smb://userName:passWord@host/path/shareFolderPath/fileName
            smbFile = new SmbFile(remoteUrl + shareFolderPath + "/" + fileName);
            smbFileInputStream = new SmbFileInputStream(smbFile);
            httpServletResponse.setHeader("content-type", "application/octet-stream");
            httpServletResponse.setContentType("application/vnd.ms-excel;charset=UTF-8");
            httpServletResponse.setHeader("Content-disposition", "attachment; filename=" + fileName);
            // 处理空格转为加号的问题
            httpServletResponse.setHeader("Content-Disposition", "attachment; fileName=" + fileName + ";filename*=utf-8''" + URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"));
            outputStream = httpServletResponse.getOutputStream();
            byte[] buff = new byte[2048];
            int len;
            while ((len = smbFileInputStream.read(buff)) != -1) {
                outputStream.write(buff, 0, len);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (SmbException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            try {
                outputStream.close();
                smbFileInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    /**
      * 下载文件到指定文件夹
      * @param remoteUrl
      * @param shareFolderPath
      * @param fileName
      * @param localDir
      */
    public static void downloadFileToFolder(String remoteUrl, String shareFolderPath, String fileName, String localDir) {
        InputStream in = null;
        OutputStream out = null;
        try {
            SmbFile remoteFile = new SmbFile(remoteUrl + shareFolderPath + File.separator + fileName);
            File localFile = new File(localDir + File.separator + fileName);
            in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
            out = new BufferedOutputStream(new FileOutputStream(localFile));
            byte[] buffer = new byte[1024];
            while (in.read(buffer) != -1) {
                out.write(buffer);
                buffer = new byte[1024];
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                out.close();
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    六、删除文件

    /**
      * 删除文件
      * @param remoteUrl
      * @param shareFolderPath
      * @param fileName
      */
    public static void deleteFile(String remoteUrl, String shareFolderPath, String fileName) {
        SmbFile SmbFile;
        try {
            // smb://userName:passWord@host/path/shareFolderPath/fileName
            SmbFile = new SmbFile(remoteUrl + shareFolderPath + "/" + fileName);
            if (SmbFile.exists()) {
                SmbFile.delete();
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (SmbException e) {
        e.printStackTrace();
        }
    }

    删除文件夹将路径指向要删除的文件夹即可。

     

    往期精彩内容:

    Java知识体系总结(2021版)

    超详细的springBoot学习笔记

    Java多线程基础知识总结(绝对经典)

    Java面试题总结(附答案)

    Vue基础知识总结(绝对经典)

    常见数据结构与算法整理总结

    展开全文
  • 一、添加依赖在pom.xml文件夹中添加如下的依赖就可以引用SmbFile类的jar包。jcifsjcifs1.3.17二、读取文件/*** 读取共享文件夹下的所有文件(文件夹)的名称* @param remoteUrl*/public static void getSharedFileList...

    一、添加依赖

    在pom.xml文件夹中添加如下的依赖就可以引用SmbFile类的jar包。

    jcifs

    jcifs

    1.3.17

    二、读取文件

    /**

    * 读取共享文件夹下的所有文件(文件夹)的名称

    * @param remoteUrl

    */

    public static void getSharedFileList(String remoteUrl) {

    SmbFile smbFile;

    try {

    // smb://userName:passWord@host/path/

    smbFile = new SmbFile(remoteUrl);

    if (!smbFile.exists()) {

    System.out.println("no such folder");

    } else {

    SmbFile[] files = smbFile.listFiles();

    for (SmbFile f : files) {

    System.out.println(f.getName());

    }

    }

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (SmbException e) {

    e.printStackTrace();

    }

    }

    三、创建文件夹

    /**

    * 创建文件夹

    * @param remoteUrl

    * @param folderName

    * @return

    */

    public static void smbMkDir(String remoteUrl, String folderName) {

    SmbFile smbFile;

    try {

    // smb://userName:passWord@host/path/folderName

    smbFile = new SmbFile(remoteUrl + folderName);

    if (!smbFile.exists()) {

    smbFile.mkdir();

    }

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (SmbException e) {

    e.printStackTrace();

    }

    }

    四、上传文件

    /**

    * 上传文件

    * @param remoteUrl

    * @param shareFolderPath

    * @param localFilePath

    * @param fileName

    */

    public static void uploadFileToSharedFolder(String remoteUrl, String shareFolderPath, String localFilePath, String fileName) {

    InputStream inputStream = null;

    OutputStream outputStream = null;

    try {

    File localFile = new File(localFilePath);

    inputStream = new FileInputStream(localFile);

    // smb://userName:passWord@host/path/shareFolderPath/fileName

    SmbFile smbFile = new SmbFile(remoteUrl + shareFolderPath + "/" + fileName);

    smbFile.connect();

    outputStream = new SmbFileOutputStream(smbFile);

    byte[] buffer = new byte[4096];

    int len = 0; // 读取长度

    while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {

    outputStream.write(buffer, 0, len);

    }

    // 刷新缓冲的输出流

    outputStream.flush();

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    try {

    outputStream.close();

    inputStream.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    五、下载文件

    /**

    * 下载文件到浏览器

    * @param httpServletResponse

    * @param remoteUrl

    * @param shareFolderPath

    * @param fileName

    */

    public static void downloadFileToBrowser(HttpServletResponse httpServletResponse, String remoteUrl, String shareFolderPath, String fileName) {

    SmbFile smbFile;

    SmbFileInputStream smbFileInputStream = null;

    OutputStream outputStream = null;

    try {

    // smb://userName:passWord@host/path/shareFolderPath/fileName

    smbFile = new SmbFile(remoteUrl + shareFolderPath + "/" + fileName);

    smbFileInputStream = new SmbFileInputStream(smbFile);

    httpServletResponse.setHeader("content-type", "application/octet-stream");

    httpServletResponse.setContentType("application/vnd.ms-excel;charset=UTF-8");

    httpServletResponse.setHeader("Content-disposition", "attachment; filename=" + fileName);

    // 处理空格转为加号的问题

    httpServletResponse.setHeader("Content-Disposition", "attachment; fileName=" + fileName + ";filename*=utf-8''" + URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"));

    outputStream = httpServletResponse.getOutputStream();

    byte[] buff = new byte[2048];

    int len;

    while ((len = smbFileInputStream.read(buff)) != -1) {

    outputStream.write(buff, 0, len);

    }

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (SmbException e) {

    e.printStackTrace();

    } catch (UnknownHostException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    finally {

    try {

    outputStream.close();

    smbFileInputStream.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    /**

    * 下载文件到指定文件夹

    * @param remoteUrl

    * @param shareFolderPath

    * @param fileName

    * @param localDir

    */

    public static void downloadFileToFolder(String remoteUrl, String shareFolderPath, String fileName, String localDir) {

    InputStream in = null;

    OutputStream out = null;

    try {

    SmbFile remoteFile = new SmbFile(remoteUrl + shareFolderPath + File.separator + fileName);

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

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

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

    byte[] buffer = new byte[1024];

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

    out.write(buffer);

    buffer = new byte[1024];

    }

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    try {

    out.close();

    in.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    六、删除文件

    /**

    * 删除文件

    * @param remoteUrl

    * @param shareFolderPath

    * @param fileName

    */

    public static void deleteFile(String remoteUrl, String shareFolderPath, String fileName) {

    SmbFile SmbFile;

    try {

    // smb://userName:passWord@host/path/shareFolderPath/fileName

    SmbFile = new SmbFile(remoteUrl + shareFolderPath + "/" + fileName);

    if (SmbFile.exists()) {

    SmbFile.delete();

    }

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (SmbException e) {

    e.printStackTrace();

    }

    }

    删除文件夹将路径指向要删除的文件夹即可。

    到此这篇关于java 通过 SmbFile 类操作共享文件夹的文章就介绍到这了,更多相关java操作共享文件夹内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    展开全文
  • 前言:最近某项目新增一个需求,需要将原本上传到tomcat 应用...1、使用smbFile 操作共享文件夹需要用到以下jar 包 <!-- https://mvnrepository.com/artifact/org.samba.jcifs/jcifs java连接共享文件夹--&g...

    前言:最近某项目新增一个需求,需要将原本上传到tomcat 应用服务器上的文件上传到 windos 的共享文件夹,所以综合了网上资料,自己开始了如下尝试。

    一、引入相关依赖

    1、使用smbFile 操作共享文件夹需要用到以下jar 包

    	<!-- https://mvnrepository.com/artifact/org.samba.jcifs/jcifs  java连接共享文件夹-->
        <dependency>
            <groupId>org.samba.jcifs</groupId>
            <artifactId>jcifs</artifactId>
            <version>1.3.14-kohsuke-1</version>
        </dependency>
    

    二、使用smbFile连接到共享文件夹

    1、测试连接到smbFile,一般常用的有两种连接方式

    第一种就是直接连接到共享文件夹,如下

    	//smb://xxx:xxx@192.168.43.108/testIndex/
    	//xxx:xxx是共享机器的用户名密码
    	String url="smb://wuxw:test@!1234@192.168.43.108/scmqc/";
    	SmbFile file = new SmbFile(url);
    	file.connect();
    	if(file.exists()) {//如果文件存在,获取所有文件进行输出测试
    		SmbFile[] files = file.listFiles();
    		for (SmbFile f : files) {
    			System.out.println(f.getName());
    		}
    	}
    

    第二种就是密码中带@特殊符号的,在使用第一种登录方法时会验证失败,因为密码和文件ip区分使用的也是@
    这时就可以使用第二种登录方法了,如下
    这样就可以将地址与用户信息分离开来,先进行用户信息的认证,就不会验证失败了

    //	此处采用优先验证登录用户信息的方法访问
    	String ip="192.168.43.108";
    	String url="smb://192.168.43.108/scmqc/";
    	String name="wuxw\\test";
    	String password="test@!1234";
    	NtlmPasswordAuthentication auth =new NtlmPasswordAuthentication(ip, name, password);
    	SmbFile file = new SmbFile(url,auth);
    	file.connect();
    	if(file.exists()){
    		SmbFile[] files = file.listFiles();
    		for(SmbFile f : files){
    			System.out.println(f.getName());
    		}
    	}
    

    三、Windows本地测试 使用 smbFile 上传、下载 共享文件夹中的文件

    public  void testSmb(){
    //		此处采用优先验证登录用户信息的方法访问
    		String ip="192.168.43.108";
    		String url="smb://192.168.43.108/scmqc/";
    		String name="wuxw\\test";
    		String password="test@!1234";
    		NtlmPasswordAuthentication auth =new NtlmPasswordAuthentication(ip, name, password);
    		SmbFile file = new SmbFile(url,auth);
    		file.connect();
    		if(file.exists()){
    			SmbFile[] files = file.listFiles();
    			for(SmbFile f : files){
    				System.out.println(f.getName());
    			}
    		}
    		// 下载文件的smb url地址、下载存放地址、用户认证信息
    		smbFileDowload(url+"test.txt", "D:\\",auth);
    		// 上传文件的smb url、文件地址、用户认证信息
    		smbFileUpload(url, "D:\\test.txt", auth);
    	}
    

    1、上传

    	//向共享目录上传文件
    	public  void smbFileUpload(String remoteUrl,String localFilePath,NtlmPasswordAuthentication auth) {
    		InputStream in = null;
    		OutputStream out = null;
    		try {
    			File localFile = new File(localFilePath);
    			String fileName = localFile.getName();
    			SmbFile remoteFile = new SmbFile(remoteUrl+"/"+fileName,auth);
    			in = new BufferedInputStream(new FileInputStream(localFile));
    			out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
    			byte[] buffer = new byte[1024];
    			while(in.read(buffer)!=-1){
    				out.write(buffer);
    				buffer = new byte[1024];
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				out.close();
    				in.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    

    2、下载

    //    从共享目录下载文件
    public void smbFileDowload(String remoteUrl,String localDir ,NtlmPasswordAuthentication auth) {
    	InputStream in = null;
    	OutputStream out = null;
    	try {
    		SmbFile remoteFile = new SmbFile(remoteUrl,auth);
    		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[1024];
    		while(in.read(buffer)!=-1){
    			out.write(buffer);
    			buffer = new byte[1024];
    		}
    	} catch (Exception e) {
    		e.printStackTrace();
    	} finally {
    		try {
    			out.close();
    			in.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    以上的测试在 Windows 本地的 java 环境下运行是完全没有问题的。

    四、java 代码在 Linux 使用 smbFile 上传、下载 共享文件夹中的文件

    首先我这边说明一下为什么会有这一步操作呢,可能因为技术还不到家,所以此点是本人结合项目实际操作加以记录,如果脑子灵活的或者有更好办法的,可以根据第三大点结合自己项目实际就完全不用看这一部分了。

    因为在windows操作共享文件夹和 Linux 操作会稍微有点不一致,众所周知,我们写好的代码最终一般都是是要放到 Linux 环境中进行运行的,所以我这里说一下我这边目前将smbFile 放到项目中处理的一个思路。

    上传:用户在web 页面上传的文件,先同时存放到tomcat 的应用服务器,然后再从应用服务器放到共享文件夹中,最后再把tomcat 应用服务器中的文件删除。
    下载:先将共享文件夹中的文件下载到 tomcat 应用服务器,然后再从 tomcat 应用服务器下载到 用户浏览器,最后再把tomcat 应用服务器中的文件删除。

    application.yml 中配置
    smb:
        name: wuxw\test
        password: test@!1234
        ip: 192.168.43.108
        url: smb://192.168.43.108/scmqc/
        filePatch: \\192.168.43.108\scmqc\
    
    #我将这些连接信息放在application.yml 文件中,此处通过注解进行获取
    @Value("${smb.name}")
    private String name;
    @Value("${smb.password}")
    private String password;
    @Value("${smb.ip}")
    private String ip;
    @Value("${smb.url}")
    private String url;
    
    /**
     * 获取用户名密码,登录到共享文件夹
     * @return
     * @throws Exception
     */
    public NtlmPasswordAuthentication connectionSmb() throws Exception {
    //		此处使用优先验证登录用户信息的方法访问
            NtlmPasswordAuthentication auth =new NtlmPasswordAuthentication(ip, name, password);
            SmbFile file = new SmbFile(url,auth);
            file.connect();
            return auth;
        }
    

    1、通过 smbFIle 上传文件

     /**
     * 向共享目录上传文件
     * @param localFilePath 要上传的文件
     * @param fileName 要上传的文件名
     */
       public void smbUpload(File localFilePath,String fileName) {
            InputStream in = null;
            OutputStream out = null;
            try {
                SmbFile remoteFile = new SmbFile(url+fileName,connectionSmb());
                in = new BufferedInputStream(new FileInputStream(localFilePath));
                out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
                byte[] buffer = new byte[1024];
                while(in.read(buffer)!=-1){
                    out.write(buffer);
                    buffer = new byte[1024];
                }
                System.out.println("smb上传成功");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    out.close();
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    

    2、 通过 smbFIle 下载文件

    /**
         * 从共享目录下载文件
         * @param fileName  下载的文件名称
         * @param localDir  下载文件保存的路径
         * @return file
         */
        public File smbDownload(String fileName,String localDir ) {
            InputStream in = null;
            OutputStream out = null;
            File localFile = null;
            try {
    //           拼接smb协议文件下载路径,初始化认证信息
                SmbFile remoteFile = new SmbFile(url+fileName,connectionSmb());
                if(remoteFile==null){
                    System.out.println("共享文件不存在");
                    return null;
                }
                localFile = new File(localDir+File.separator+fileName);
                in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
                out = new BufferedOutputStream(new FileOutputStream(localFile));
                byte[] buffer = new byte[1024];
                while(in.read(buffer)!=-1){
                    out.write(buffer);
                    buffer = new byte[1024];
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    out.close();
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return localFile;
        }
    

    3、外部类中调用 smbFile 上传方法

    //localFile 就是已经上传到 tomcat 应用服务器的文件,上传到Tomcat 应用服务器这部分我就不贴出来了
    //fileName 就是文件名称
    	smbFileUtil.smbUpload(localFile,fileName);
    
    //得到要删除的文件进行删除
        File deleteFile = new File(localPath);
        //如果文件不存在
        if (!deleteFile.exists()) {
            throw new ZmmaxException("", "文件不存在");
        } else {//存在直接删除
            deleteFile.delete();
        }
    

    4、外部类中调用 smbFile 下载方法

    //libFile.getFileName()  就是需要下载的文件名称
    //unixFileUpload = /opt/upload/  就是 tomcat 应用服务器下载地址
    file = smbFileUtil.smbDownload(libFile.getFileName(),unixFileUpload);
     res.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(libFile.getFileTrueName(), "UTF-8"));
        //读取要下载的文件,保存到文件输入流
        FileInputStream in = new FileInputStream(file);
        OutputStream os = res.getOutputStream();
        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len = in.read(bytes)) > 0) {
            os.write(bytes);
        }
        in.close();
        os.close();
        
        //得到要下载的文件,将tomcat服务器上文件删除
        File deleteFile = new File(unixFileUpload+libFile.getFileName());
        //如果文件不存在
        if (!deleteFile.exists()) {
            throw new ZmmaxException("", "文件不存在");
        } else {//存在直接删除
            deleteFile.delete();
        }
    

    关注公众号查看更多资源
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • // smb://userName:passWord@host/path/shareFolderPath/fileName SmbFile smbFile = new SmbFile(remoteUrl + shareFolderPath + “/” + fileName); smbFile.connect(); outputStream = new SmbFileOutputStream...
  • SmbFile smbfile = new SmbFile(URL); List list = new ArrayList(); try { if (!smbfile.exists()) { System.out.println("no such folder"); } else { SmbFile[] files = smbfile.listFiles(); for (SmbFile f : ...
  • // smb://userName:passWord@host/path/shareFolderPath/fileName SmbFile smbFile = new SmbFile(remoteUrl + shareFolderPath + “/” + fileName); smbFile.connect(); outputStream = new SmbFileOutputStream...
  • */ ...SmbFile smbFile; try { // smb://userName:passWord@host/path/ smbFile = new SmbFile(remoteUrl); if (!smbFile.exists()) { System.out.println("no such folder"); } else {
  • import jcifs.smb.SmbFile; //导入方法依赖的package包/类@BeforeClassvoid beforeClass() throws IOException {Properties properties = new Properties();InputStream propertiesInput = new FileInputStream...
  • import jcifs.smb.SmbFile; //导入方法依赖的package包/类@BeforeClassvoid beforeClass() throws IOException {Properties properties = new Properties();InputStream propertiesInput = new FileInputStream...
  • 最近开发过程中,做samba和web服务器对接的时候发现了神器SmbFile,应该很多熟悉的就是smbclient这个命令了,那么SmbFile又是一个什么东东。 起源是这样的,老板叫我对samba的数据源进行读取,几千万条数据啊,难道...
  • An SmbFile constructed with the result of * this method will result in an SmbFile that is equal to * the original. * * @return The canonicalized URL of this SMB resource. */ public String ...
  • 浅谈SmbFile 远程获取服务器文件

    千次阅读 2018-03-24 11:53:53
    smbFile = new SmbFile("smb://" + remoteUsername + ":" + remotePassword + "@" + remoteFilepath); logger.debug("smb://" + remoteUsername + ":" + remotePassword + "@" + remoteFilepath); } else { ...
  • SmbFile 类实现局域网文件共享读写

    千次阅读 2018-07-11 09:06:25
    业务需求,需要读取局域网内的任意PC上的文件,用java去实现,查阅资料,结合window 的文件共享功能和SmbFile类的支持可以实现这个功能。SMB 一种客户机/服务器、请求/响应协议。通过 SMB 协议,客户端应用程序...
  • 1.使用jar包:jcifs-1.3.19.jar  ...import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; pu...
  • smb://192.168.0.106/qwe/test.txt SmbFile f = new SmbFile("smb://guest:123@192.168.0.106/qwe/test.txt"); if(!f.exists){ f.createNewFile();} } catch (Exception e) { e.printStackTrace(); } } } ps:如果不...
  •  SmbFile smbBackUp = session.createSmbDirectoryObject(backUp + name);  smbForm.copyTo(smbBackUp);  smbForm.delete();  }  } catch (Exception e) {  e.printStackTrace();  }finally{  ...
  •  SmbFile remoteFile = new SmbFile(url);  if(remoteFile.exists()) {  String[] files = remoteFile.list();  remoteFile.connect();  String[] files = remoteFile.list();  return files;  }  ...
  • import jcifs.smb.SmbFile; //导入方法依赖的package包/类public void run() {while( true ) {try {DirEntry e;synchronized( dirList ) {while( dirList.isEmpty() ) {//System.err.println( "workingThreads=" + ...
  • 使用SmbFile导出excel到共享文件目录

    千次阅读 2017-04-27 16:48:09
    (SmbFile copySmb,String sheetName,String columnValues,List, String>> map) { SmbFileInputStream inStream = null ; SmbFileOutputStream outStream = null ; XSSFWorkbook wb = null ; try { ...
  • 我说一下思路 第一步 现将上传的文件保存到数据库,数据库的字段有三个 (orderId,fileName,fileId) 第二步 通过SmbFile将文件传送到共享文件夹 3.需要文件上传的地方用iframe 4.列出配置文件,Action核心代码,...
  • SmbFile uploadfile = new SmbFile("smb://asd;ay6sa:naveco:123@186.20.10.88/filename/"); path = uploadfile+"1.jpg"; OutputStream out = new SmbFileOutputStream(path); Thumbnails.of("D://1.jpg").size(120...
  • SmbFile(smbFile+ fileName); buf = new BufferedInputStream( new SmbFileInputStream(remoteFile)); byte buff[] = new byte [2048 ]; int readBytes = 0 ; while (-1 != (readBytes = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 936
精华内容 374
关键字:

smbfile