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:password@192.168.0.77/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:password@192.168.0.77/test   
  110. }

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

  1. MeteoInfoLab脚本示例:读取远程文件

    利用Unidata netCDF Java库对远程文件的读取能力(OpenDAP, ADDE, THREDDS等),可以读取远程文件并绘图.脚本程序: fn = 'http://monsoondata ...

  2. Java项目中读取properties文件,以及六种获取路径的方法

    下面1-4的内容是网上收集的相关知识,总结来说,就是如下几个知识点: 最常用读取properties文件的方法 InputStream in = getClass().getResourceAsStr ...

  3. java 利用POI 读取Execel数据的真实行数

    java 利用poi 读execel文件的操作,读取总的数据行数一般是通过调用 sheet.getLastRowNum() ;可是这样有时候会出现一些问题,例如,当其中一行的数据的确都为空,可是其原本 ...

  4. java使用poi读取ppt文件和poi读取excel、word示例

    java使用poi读取ppt文件和poi读取excel.word示例 http://www.jb51.net/article/48092.htm

  5. JAVA使用POI读取EXCEL文件的简单model

    一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...

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

    \第五天-servlet开发和ServletConfig与ServletContext对象\12-WEB应用中的普通Java程序如何读取资源文件.mp4; 多层时,DAO为了得到资源文件中的配置参数: ...

  7. java中利用RandomAccessFile读取超大文件

    超大文件我们使用普通的文件读取方式都很慢很卡,在java中为我提供了RandomAccessFile函数,可以快速的读取超大文件并且不会感觉到卡哦,下面看我的一个演示实例. 服务器的日志文件往往达到4 ...

  8. java 分次读取大文件的三种方法

    1. java 读取大文件的困难 java 读取文件的一般操作是将文件数据全部读取到内存中,然后再对数据进行操作.例如 Path path = Paths.get("file path&qu ...

  9. JAVA利用poi获取world文件内容

    本文主要简单介绍了利用poi包,读取world文件内容. 这个依然存在版本的问题,只能读取doc结尾的老版本文件. 话不多说,上代码: import java.io.File; import java ...

随机推荐

  1. srping标签和hibernate查询

    Spring的注解形式:@Repository.@Service.@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean. view层:    结合control层,显示 ...

  2. [Rails] 从 Request 到 Response(1)

    本文翻译自:Rails from Request to Response 系列:个人选择了自己感兴趣的部分进行翻译,需要阅读原文的同学请戳前面的链接. 第一部分 导言(Introduction) 服务 ...

  3. Intent Flag实际项目 -- 超时跳转登录界面并清理前面所有activity

    项目中涉及到登录超时跳转登录界面的逻辑,我以前的跳转flag为Intent.FLAG_ACTIVITY_CLEAR_TOP,但是点击返回按钮还是会回到上个界面.代码如下: ActivityUtils. ...

  4. Sass与Compress实战:第六章

    概要:介绍Compass如何让你从本地开发原型轻松转移到正产环境的网址或Web应用中. 本章内容: ● CSS精灵的历史和基本原则 ● Compass混合器让精灵自动化 ● 自定义精灵图片和CSS输出 ...

  5. 用getBoundingClientRect()来获取页面元素的位置

    以前绝大多数的使用下面的代码来获取页面元素的位置: [code="javascript"]var _x = 0, _y = 0;do{_x += el.offsetLeft;_y ...

  6. Java 泛型 通配符类型

    Java 泛型 通配符类型 @author ixenos 摘要:限定通配符类型.无限定通配符类型.与普通泛型区别.通配符捕获 通配符类型 通配符的子类型限定(?都是儿孙) <? extends ...

  7. MySQL索引入门

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 索引分单列索引和组合索引.单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引. ...

  8. Java 水仙花数

    小小练习大神掠过吧 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数&quo ...

  9. UI篇—懒加载

    1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化 ...

  10. tomcat源码分析(一)

    tomcat的启动从Bootstrap类的main方法开始. public static void main(String args[]) { //单例 if (daemon == null) { d ...