java下载上传远程文件
2018-03-09 09:51
459 查看
利用的是SMB协议从远程服务器下载上传文件
可以在本地做一个共享文件夹放点东西来测试下
这是用到的jar包[jcifs-1.2.3.jar],不能设置0积分有点可惜。(https://download.csdn.net/download/qq_39019865/10276986)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 }
如果是下载上传远程文件夹的话,需要把文件夹遍历一下,路径也需要修改,smbGet的最后要加“/”
// 从共享目录下载文件夹 /** * 方法二: * smbGet("smb://tom:123@192.168.0.87/datatrans/price/","f:/"); * @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; } SmbFile[] files = remoteFile.listFiles(); for (SmbFile smbFile : files) { String fileName = smbFile.getName(); File localFile = new File(localDir + 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]; } } System.out.println("完成"); } 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(); } } }
相关文章推荐
- java使用Linux命令scp从远程服务器上传下载文件
- java 通过SSH方式连接远程主机并上传和下载文件
- java利用jcraft实现和远程服务器交互,实现上传下载文件
- java 通过SSH方式连接远程主机并上传和下载文件
- Java利用SMB上传、下载、读取(内容或文件名)、复制、删除远程文件
- Java实现文件远程上传和下载
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息
- Java实现文件远程上传和下载
- Java实现远程HDFS的文件操作(新建、上传、下载、删除)
- Java实现远程HDFS的文件操作(新建、上传、下载、删除)
- Java Web 开发中文件的上传与下载(FTP/HTTP)
- jaVA使用FTP上传下载文件的问题
- java上传下载文件的总结
- JAVA实现FTP文件上传下载文件
- JAVA 文件上传与下载
- jaVA使用FTP上传下载文件的问题
- java做的比较完善的FTP连接上传下载文件【转】
- 用Java实现FTP批量大文件上传下载
- 文件上传下载:通过java方法把附件保存到clob字段中
- 利用WebService实现远程服务器文件的上传和下载