java基於jcifs.smb實現遠程發送文件到服務器


1、服務器指定共享文件夾

 

1.1、驗證服務器共享文件夾本地可以訪問:

 2、導入依賴的相關jar包         jcifs-1.3.**.jar:

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

3.創建java類:SmbUtil

並粘貼下面的代碼:

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.UnknownHostException;

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

public class SmbUtil {
    // 1. 聲明屬性
    private String url = "smb://userName:password@192.168.2.153/mars/";
    private SmbFile smbFile = null;
    private SmbFileOutputStream smbOut = null;
    private static SmbUtil smbUtil = null; // 共享文件協議

    private SmbUtil(String url) {
        this.url = url;
        this.init();
    }

    // 2. 得到SmbUtil和連接的方法
    public static synchronized SmbUtil getInstance(String url) {
        if (smbUtil == null)
            return new SmbUtil(url);
        return smbUtil;
    }


    // 3.smbFile連接
    public void init() {
        try {
            System.out.println("開始連接...url:" + this.url);
            smbFile = new SmbFile(this.url);
            smbFile.connect();
            System.out.println("連接成功...url:" + this.url);
        } catch (MalformedURLException e) {
            e.printStackTrace();
            System.out.print(e);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.print(e);
        }
    }

    // 4.上傳文件到服務器
    public int uploadFile(File file) {
        int flag = -1;
        BufferedInputStream bf = null;
        try {
            this.smbOut = new SmbFileOutputStream(this.url + "/"
                    + file.getName(), false);
            bf = new BufferedInputStream(new FileInputStream(file));
            byte[] bt = new byte[8192];
            int n = bf.read(bt);
            while (n != -1) {
                this.smbOut.write(bt, 0, n);
                this.smbOut.flush();
                n = bf.read(bt);
            }
            flag = 0;
            System.out.println("文件傳輸結束...");
        } catch (SmbException e) {
            e.printStackTrace();
            System.out.println(e);
        } catch (MalformedURLException e) {
            e.printStackTrace();
            System.out.println(e);
        } catch (UnknownHostException e) {
            e.printStackTrace();
            System.out.println("找不到主機...url:" + this.url);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println(e);
        } finally {
            try {
                if (null != this.smbOut)
                    this.smbOut.close();
                if (null != bf)
                    bf.close();
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }

        return flag;
    }

    // 5. 在main方法里面測試
    public static void main(String[] args) {
        // 服務器地址 格式為 smb://電腦用戶名:電腦密碼@電腦IP地址/IP共享的文件夾
        String remoteUrl = "smb://administrator:123456@10.8.66.22/mars/";
        String localFile = "C:\\Users\\Administrator\\Desktop\\***.txt"; // 本地要上傳的文件
        File file = new File(localFile);
        SmbUtil smb = SmbUtil.getInstance(remoteUrl);
        smb.uploadFile(file);// 上傳文件
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM