java 使用smb获取共享文件夹文件 和上传到共享文件夹(smb协议 局域网共享文件夹文件操作)

2,327 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情

局域网共享文件夹上传文件

实际开发中共享网络环境(局域网)中文件共享展示和上传文件到共享文件夹中,更甚至于共享文件的展示。局域网中共享文件夹中文件上传,那么上传文件到共享文件夹的就是今天的主题。

第一步导入Maven·依赖

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

第二步上传文件工具类代码

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 java.io.BufferedInputStream;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;

/**
 * @author Mr_xk
 * @date 2021/6/11 14:28
 * @version 1.0
 */
public class SmbFileUploadFile {
	    /** 
	     * @param GoalUrl获取文件地址
	     * 远程路径 smbGetone://192.002.75.204/test/新建 文本文档.txt 
	     * @throws IOException
             * 单个文件的上传
	     */  
	    public static void smbGetone(String GoalUrl) throws IOException {  
	        SmbFile smbFile = new SmbFile(GoalUrl);  
	        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();  
	    }  
	    /**
             *//这里获取的时文件夹下所有的文件
	     *  //smbGetall("smb://192.002.2.100//ceshi//","C:/copy"); 
	     * @param GoalUrl获取文件地址
	     * @param localUrl本地地址
	     */
	    public static void smbGetall(String GoalUrl, String localUrl) {  
	        InputStream in = null;  
	        OutputStream out = null;  
	        try {  
	            SmbFile remoteFile = new SmbFile(GoalUrl);  
	            if (remoteFile == null) {  
	                System.out.println("不存在");  
	                return;  
	            }
	            SmbFile[] listFiles = remoteFile.listFiles();
                    
	            for(int i = 0; i < listFiles.length; i++) {
	            	String fileName = listFiles[i].getName();  
		            File localFile = new File(localUrl + File.separator + fileName);  
		            in = new BufferedInputStream(new SmbFileInputStream(remoteFile+fileName));  
		            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();  
	            }  
	        }  
	    }  
	  /**
	   *  UploadFile("smb://192.002.2.100//FileServer//upload//","C:/copy/ceshi.pdf");
	   * @param GoalUrl目标位置
	   * @param localUrl本地文件地址
	   */
	    public static void UploadFile(String GoalUrl, String localUrl) {  
	        InputStream in = null;  
	        OutputStream out = null;  
	        try {  
	            File localFile = new File(localUrl);  
	            String fileName = localFile.getName();  
	            SmbFile remoteFile = new SmbFile(GoalUrl + "/" + fileName);  
	            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();  
	            }  
	        }  
	    }  
	  
}

感兴趣的小伙伴可以去试试~~~~
实践是检验真理的唯一方法! 明天见🥰🥰🥰