在使用java-rmi的过程中,必然会遇到一个文件上传的问题,由于在rmi中无法传输文件流(比如rmi中的方法参数不能是FileInputStream之类的),那么我们只好选择一种折中的办法,就是先用FileInputStream将文件读到一个Byte数组中,然后把这个Byte数组作为参数传进RMI的方法中,然后在服务器端将Byte数组还原为outputStream,这样就能通过RMI来传输文件了 JAVA-RMI实现大文件传输,具体代码如下:

[代码]FileClient

package rmiupload;   import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException;   public class FileClient {       public FileClient() {         // TODO Auto-generated constructor stub     }       public static void main(String[] args) {         try {             FileDataService fileDataService = (FileDataService) Naming.lookup("rmi://localhost:9001/FileDataService");             fileDataService.upload("/Users/NeverDie/Documents/test.mp4", new FileClient().fileToByte("/Users/NeverDie/Music/test.mp4"));         } catch (MalformedURLException | RemoteException | NotBoundException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }     } //这个方法比较重要,通过这个方法把一个名为filename的文件转化为一个byte数组     private byte[] fileToByte(String filename){         byte[] b = null;         try {             File file = new File(filename);             b = new byte[(int) file.length()];             BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));             is.read(b);         } catch (FileNotFoundException e) {             // TODO Auto-generated catch block             e.printStackTrace();         } catch (IOException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }         return b;     } }转载请注明来源稳砜诚信在线http://www.wind-fixasia.com

java rmi 文件传输_JAVA-RMI实现大文件传输相关推荐

  1. 镭速传输,助力华为大文件传输速率提升十倍

    成立于1987年的华为是全球领先的ICT(信息与通信)基础设施和智能终端提供商,致力于把数字世界带入每个人.每个家庭.每个组织,构建万物互联的智能世界.始终坚持在通信网络.IT.智能终端和云服务等领域 ...

  2. java 传输 大文件_java高效实现大文件拷贝功能

    在java中,FileChannel类中有一些优化方法可以提高传输的效率,其中transferTo( )和 transferFrom( )方法允许将一个通道交叉连接到另一个通道,而不需要通过一个缓冲区 ...

  3. java 拷贝大文件_java高效实现大文件拷贝功能

    在java中,FileChannel类中有一些优化方法可以提高传输的效率,其中transferTo( )和 transferFrom( )方法允许将一个通道交叉连接到另一个通道,而不需要通过一个缓冲区 ...

  4. java切割文件_Java如何将大文件切割成小文件

    运用Java编写代码将一个大文件切割成指定大小的小文件 思路: 对已知文件进行切割操作 –> 得到多个碎片文件 使用: 1. 1个字节输入流 –> 读取已知文件中的数据 2. 多个字节输出 ...

  5. java是怎么实现文件上传的_java怎么实现大文件上传

    Q1:javaWeb能和ftp实现大文件上传吗 java上传可以使用common-fileupload上传组件的.common-fileupload是jakarta项目组开发的一个功能很强大的上传文件 ...

  6. php curl 传输大文件,空白目录 · php下载大文件curl · 看云

    假设一个场景: 当用户需要通过我们提供的下载服务,来下载一个较大的文件(200M-2G)时,我们服务端应该如何来满足这个服务呢? 且当我们的服务端是采用nginx+php的架构时,该如何解决呢. 作为 ...

  7. 镭速传输:TB级大文件传输,一招教你搞定

    当文件散布在各个地方时,收集文件就变成了一项非常昂贵且繁复的操作.操作系统通常会在本地存储中保留文件的属性数据缓存,在后台连续索引本地存储中的文件,并使用可以在需要时快速访问的值来使高速缓存保持最新状 ...

  8. 云服务器传文件用什么软件,免费云主机文件传输软件推荐,大文件极速秒传

    在对云主机进行运维的过程中,我们总是需要在云主机和本地之间进行文件传输.但是文件传输的过程往往会受到带宽的限制,譬如小编仅从云主机上下载一个300兆大小的文件就需要10分钟,上传一个60兆大小的文件需 ...

  9. java多线程 文件夹_java多线程读同一个文件

    java多线程同时读取一个文件,这个方法可行吗?不可行. 多线程能够提高效率是因为现在的cpu普遍是多核cpu, 多条线程可以在多个内核中同时执行来提高计算效率.但是计算机磁盘的磁头只有一个,即使多条 ...

  10. java上传加密_Java上传下载文件并实现加密解密

    使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载 引入依赖 在 pom.xml 中添加 Jersey 相关依赖 com.sun.jersey jersey-client 1.18.1 ...

最新文章

  1. 写一个会导致死锁的线程
  2. word图片嵌入式为何只能看到一部分_Word排版的正确姿势!(Word论文排版教学)...
  3. python bootstrap 视频_想用Django+ Bootstrap写一个网站, 有哪些比较系统完整的书或者视频可以参考?...
  4. 计算机网络---分层结构、协议、接口、服务
  5. 刷脸AI供应商下调业绩预期,苹果股价应声跌掉一个小米
  6. 快慢指针算法及其应用
  7. Log4j与common-logging联系与区别
  8. 药事管理学名词解释和问答题题集
  9. C语言字符与数字的互转
  10. SI4463研究计划(兼STM32F0进一步加深理解)
  11. mongodb 下载
  12. xp系统查计算机设备型号,xp电脑设备型号怎么查询
  13. 网页或公众号微信网页抓包软件Fiddler的正确安装使用!
  14. VC绘制位图--BeginPaint()与GetDC()的区别
  15. 乡镇卫生院计算机编制待遇怎么样,三甲医院VS乡镇卫生院事业编,选哪个?
  16. 一、MySQL数据库设置默认时区
  17. 使用电脑登录邮箱账号的流程是什么?
  18. 了解计算机的组成和硬件系统
  19. 确认,谷歌AI中国中心总裁李佳离职
  20. Subscriber class XXX and its super classes have no public methods with the @Subscribe annotation

热门文章

  1. js中的数组Array定义与sort方法使用示例
  2. Nodejs Promise对象
  3. [ES6] 细化ES6之 -- 块级作用域
  4. css3实现背景渐变的方法
  5. Tips--Docker常用命令
  6. matlab画图小记tickdir\YTick\YTick
  7. 官网下载JDK需要登陆的Oracle账号
  8. hadoop 批流处理的实现_从T+1到T+0,浅谈PetaBase的实时流式处理
  9. linux root密码激活,Linux - root初始密码设置
  10. ES6对于数组的扩展