java 利用SMB读取远程文件

Java代码  

  1. package com.yss.test.FileReadWriter;
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.OutputStream;
  10. import java.net.MalformedURLException;
  11. import jcifs.smb.SmbFile;
  12. import jcifs.smb.SmbFileInputStream;
  13. import jcifs.smb.SmbFileOutputStream;
  14. public class RemoteAccessData {
  15. /**
  16. * @param args
  17. * @throws IOException
  18. */
  19. public static void main(String[] args) throws IOException {
  20. smbGet1("smb://192.168.75.204/test/新建 文本文档.txt");
  21. smbGet("smb://192.168.75.204/test/新建 文本文档.txt","e:/");
  22. }
  23. /**
  24. * 方法一:
  25. *
  26. * @param remoteUrl
  27. *            远程路径 smb://192.168.75.204/test/新建 文本文档.txt
  28. * @throws IOException
  29. */
  30. public static void smbGet1(String remoteUrl) throws IOException {
  31. SmbFile smbFile = new SmbFile(remoteUrl);
  32. int length = smbFile.getContentLength();// 得到文件的大小
  33. byte buffer[] = new byte[length];
  34. SmbFileInputStream in = new SmbFileInputStream(smbFile);
  35. // 建立smb文件输入流
  36. while ((in.read(buffer)) != -1) {
  37. System.out.write(buffer);
  38. System.out.println(buffer.length);
  39. }
  40. in.close();
  41. }
  42. // 从共享目录下载文件
  43. /**
  44. * 方法二:
  45. *    路径格式:smb://192.168.75.204/test/新建 文本文档.txt
  46. *              smb://username:[email protected]/test
  47. * @param remoteUrl
  48. *            远程路径
  49. * @param localDir
  50. *            要写入的本地路径
  51. */
  52. public static void smbGet(String remoteUrl, String localDir) {
  53. InputStream in = null;
  54. OutputStream out = null;
  55. try {
  56. SmbFile remoteFile = new SmbFile(remoteUrl);
  57. if (remoteFile == null) {
  58. System.out.println("共享文件不存在");
  59. return;
  60. }
  61. String fileName = remoteFile.getName();
  62. File localFile = new File(localDir + File.separator + fileName);
  63. in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
  64. out = new BufferedOutputStream(new FileOutputStream(localFile));
  65. byte[] buffer = new byte[1024];
  66. while (in.read(buffer) != -1) {
  67. out.write(buffer);
  68. buffer = new byte[1024];
  69. }
  70. } catch (Exception e) {
  71. e.printStackTrace();
  72. } finally {
  73. try {
  74. out.close();
  75. in.close();
  76. } catch (IOException e) {
  77. e.printStackTrace();
  78. }
  79. }
  80. }
  81. // 向共享目录上传文件
  82. public static void smbPut(String remoteUrl, String localFilePath) {
  83. InputStream in = null;
  84. OutputStream out = null;
  85. try {
  86. File localFile = new File(localFilePath);
  87. String fileName = localFile.getName();
  88. SmbFile remoteFile = new SmbFile(remoteUrl + "/" + fileName);
  89. in = new BufferedInputStream(new FileInputStream(localFile));
  90. out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
  91. byte[] buffer = new byte[1024];
  92. while (in.read(buffer) != -1) {
  93. out.write(buffer);
  94. buffer = new byte[1024];
  95. }
  96. } catch (Exception e) {
  97. e.printStackTrace();
  98. } finally {
  99. try {
  100. out.close();
  101. in.close();
  102. } catch (IOException e) {
  103. e.printStackTrace();
  104. }
  105. }
  106. }
  107. // 远程url smb://192.168.0.77/test
  108. // 如果需要用户名密码就这样:
  109. // smb://username:[email protected]/test
  110. }

所需jcifs  jar包:

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

原文地址:https://www.cnblogs.com/skinchqqhah/p/10351472.html

时间: 2024-10-08 04:06:50

java 利用SMB读取远程文件的相关文章

java利用poi读取Excel文件

java读取Excel文件,笔者认为:从结构上来看,Excel文件是由一个一个的单元格组成的,有点像细胞cell,逐行的排列.那么我们读的时候也应该逐行逐行的读,从左到右的寻找每一个cell.一.实例代码: 只是实现了一种方式,因为依照读取内容的不同,读取的后想要的操作不同,因此不能苟同全部,只是方法是相通的.说道Excel文件的结构,这货从数学的角度来说,绝对是一个二维数组,因此我就拿字符串二维数组接受读取后的内容,并每个单元格每个单元格的打印.当然也可以返回三维数组(包含该单元格的位置坐标)

利用XPath读取Xml文件

之所以要引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素.可以把XPath比作文件管理路径:通过文件管理路 径,可以按照一定的规则查找到所需要的文件:同样,依据XPath所制定的规则,也可以很方便地找到XML结构文档树中的任何一个节点. 不过,由于XPath可应用于不止一个的标准,因此W3C将其独立出来作为XSLT的配套标准颁布,它是XSLT以及我们后面要讲到的XPointer的重要组成部分. 在介绍XPath的匹配规则之前,我们先来看一些有关XPath的基

Java-Servlet--《12-WEB应用中的普通Java程序如何读取资源文件.mp4》 有疑问

\第五天-servlet开发和ServletConfig与ServletContext对象\12-WEB应用中的普通Java程序如何读取资源文件.mp4; 多层时,DAO为了得到资源文件中的配置参数: servlet 中的 doGet方法中获得ServletcontextServletcontext context = this.getServletContext();然后将context 对象传到 DAO中使用,这样的话耦合就高了,不合理. 所以:要通过类加载器的方式 这个Properties

WEB应用中的普通Java程序如何读取资源文件

1 package cn.itcast; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpSer

java提供的读取properties文件方法,应对编码问题

Properties prop=new Properties(); prop.load(Client.class.getClassLoader().getResourceAsStream("config.properties")); java提供的读取properties文件方法,应对编码问题

java中利用RandomAccessFile读取超大文件

超大文件我们使用普通的文件读取方式都很慢很卡,在java中为我提供了RandomAccessFile函数,可以快速的读取超大文件并且不会感觉到卡哦,下面看我的一个演示实例. 服务器的日志文件往往达到400多M,简单的文件读取实在太慢,太占用机器资源. 特别是如果你需要5分钟就扫描一次日志文件,来统计一些即时数据.比如刚才10分钟的来访客户(大型网站用户统计系统例如51.la 会经常用到吧.)即时扫描大数据文件中的一部分显得非常之重要.本文讲述了如果使用java的RandomAccessFile方

JAVA利用poi获取world文件内容

本文主要简单介绍了利用poi包,读取world文件内容. 这个依然存在版本的问题,只能读取doc结尾的老版本文件. 话不多说,上代码: 1 import java.io.File; 2 import java.io.FileInputStream; 3 4 import org.apache.poi.hwpf.HWPFDocument; 5 import org.apache.poi.hwpf.usermodel.Range; 6 7 8 public class testdoc { 9 /**

JAVA利用jxl读取Excel内容

JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 1 import java.io.File; 2 import java.io.FileInputStream; 3 4 import jxl.Cell; 5 import jxl.Sheet; 6 import jxl.Workbook; 7 8 9 public class testxls { 10 /** 11 * 读取xls文件内容 12 * @param file 想要读取

java无依赖读取Excel文件

说到Java读取Excel文件,用得多的当然是POI或jxls,但今天在看一本书的时候.当中提到使用JdbcOdbcDriver这个驱动类在不依赖第三方库的情况下也能够完毕对Excel文件的读取操作,网上搜了一下原因然后自己写了个样例跑通了,在此记录一下. Java读取数据库大家都非常熟悉,须要一个数据源与对应的驱动.开发人员通过JDBC操作驱动.驱动再去操作数据库.那么Java读取Excel文件也是类似的.在Windows系统中,能够将一个Excel文件注冊为一个ODBC数据源,注冊过程为: