首页 > 开发 > Java > 正文

java利用SMB读取远程文件的方法

2020-07-28 14:45:53
字体:
来源:转载
供稿:网友

本文实例为大家分享了java利用SMB读取远程文件的具体代码,供大家参考,具体内容如下

package com.yss.test.FileReadWriter;  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 java.net.MalformedURLException;  import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; import jcifs.smb.SmbFileOutputStream;  public class RemoteAccessData {   /**   * @param args   * @throws IOException   */  public static void main(String[] args) throws IOException {   smbGet1("smb://192.168.75.204/test/新建 文本文档.txt");   smbGet("smb://192.168.75.204/test/新建 文本文档.txt","e:/");  }   /**   * 方法一:   *   * @param remoteUrl   *   远程路径 smb://192.168.75.204/test/新建 文本文档.txt   * @throws IOException   */  public static void smbGet1(String remoteUrl) throws IOException {   SmbFile smbFile = new SmbFile(remoteUrl);   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();  }   // 从共享目录下载文件  /**   * 方法二:   * 路径格式:smb://192.168.75.204/test/新建 文本文档.txt   *    smb://username:password@192.168.0.77/test   * @param remoteUrl   *   远程路径   * @param localDir   *   要写入的本地路径   */  public static 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[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();    }   }  }   // 向共享目录上传文件  public static 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[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();    }   }  }   // 远程url smb://192.168.0.77/test  // 如果需要用户名密码就这样:  // smb://username:password@192.168.0.77/test  } 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表