iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java常见的3种文件上传方法和速度对比
  • 353
分享到

Java常见的3种文件上传方法和速度对比

2024-04-02 19:04:59 353人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

在java里面文件上传的方式很多,最简单的依然是FileInputStream、FileOutputStream了,在这里我列举3种常见的文件上传方法代码,并比较他们的上传速度(由于

在java里面文件上传的方式很多,最简单的依然是FileInputStream、FileOutputStream了,在这里我列举3种常见的文件上传方法代码,并比较他们的上传速度(由于代码是在本地测试,所以忽略网速的影响)

还是老规矩,大神请绕一下,里屋说话。

首先呢,使用springMVC原生上传文件方法,需要一些简单的配置,不多说,上图。

1.采用spring提供的上传文件的方法


@RequestMapping("springUpload")
    public String  springUpload(httpservletRequest request) throws IllegalStateException, IOException
    {
         long  startTime=System.currentTimeMillis();
         //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
        CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
                request.getSession().getServletContext());
        //检查fORM中是否有enctype="multipart/form-data"
        if(multipartResolver.isMultipart(request))
        {
            //将request变成多部分request
            MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
           //获取multiRequest 中所有的文件名
            Iterator iter=multiRequest.getFileNames();
              
            while(iter.hasNext())
            {
                 
                //一次遍历所有文件
                MultipartFile file=multiRequest.getFile(iter.next().toString());
                if(file!=null)
                {
                    String path="E:/springUpload"+file.getOriginalFilename();
                    //上传
                    file.transferTo(new File(path));
                }
                  
            }
            
        }
        long  endTime=System.currentTimeMillis();
        System.out.println("Spring方法的运行时间:"+String.valueOf(endTime-startTime)+"ms");
        return "/success";
    }

在这里故意加一个计时,待会就用它简单的比较上传时间问题(本人暂时还没能力处理资源占用问题,所以这里也不做比较)

2.第二位选手,采用file.Transto 来保存上传的文件

这是目前我认为最好的上传方式,也是我最喜欢的上传方式,代码简单,速度快。请看下面代码。



    @RequestMapping("fileUpload2")
    public String  fileUpload2(@RequestParam("file") CommonsMultipartFile file) throws IOException {
         long  startTime=System.currentTimeMillis();
        System.out.println("fileName:"+file.getOriginalFilename());
        String path="E:/"+new Date().getTime()+file.getOriginalFilename();
          
        File newFile=new File(path);
        //通过CommonsMultipartFile的方法直接写文件(注意这个时候)
        file.transferTo(newFile);
        long  endTime=System.currentTimeMillis();
        System.out.println("采用file.Transto的运行时间:"+String.valueOf(endTime-startTime)+"ms");
        return "/success";
    }

3.第三种采用流的方式上传

这种方法在新手学习的时候经常用到,但是我并不喜欢,因为它又慢又难写,请看


@RequestMapping("fileUpload")
    public String  fileUpload(@RequestParam("file") CommonsMultipartFile file) throws IOException {
          
        //用来检测程序运行时间
        long  startTime=System.currentTimeMillis();
        System.out.println("fileName:"+file.getOriginalFilename());
          
        try {
            //获取输出流
            OutputStream os=new FileOutputStream("E:/"+new Date().getTime()+file.getOriginalFilename());
            //获取输入流 CommonsMultipartFile 中可以直接得到文件的流
            InputStream is=file.getInputStream();
            byte[] bts = new byte[1024];
            //一个一个字节的读取并写入
            while(is.read(bts)!=-1)
            {
                os.write(bts);
            }
           os.flush();
           os.close();
           is.close();
          
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        long  endTime=System.currentTimeMillis();
        System.out.println("采用流上传的方式的运行时间:"+String.valueOf(endTime-startTime)+"ms");
        return "/success";
    }

方法写好了,接下来,我们在本地做个简单的评测,

1.写个简单的文件上传页面

    

2.分别选择同一个文件

稍微大一点(我这里上传的ZooKeeper3.3.6的安装包,大小为11M),以区别处他们的耗时差异(最好不实用ie,很容易崩溃,亲测)

  

3.统计耗时,请看下图,结果一目了然。

在此补充说明一点,如果你认为采用流的方式上传慢是因为我这里内存开辟小了,可以尝试开大一点,但是依然不影响他的速度最慢的地位,如果内存开的过大,反倒影响速度。

到此这篇关于Java常见的3种文件上传方法和速度对比的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Java常见的3种文件上传方法和速度对比

本文链接: https://www.lsjlt.com/news/159753.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java常见的3种文件上传方法和速度对比
    在java里面文件上传的方式很多,最简单的依然是FileInputStream、FileOutputStream了,在这里我列举3种常见的文件上传方法代码,并比较他们的上传速度(由于...
    99+
    2024-04-02
  • python常见读取语音的3种方法速度对比
    python 读取语音文件时,常用的无非以下三种方式,但是在我们数据量变的很大是,不同的读取方式之间的性能差异就会被进一步放大,于是本文着重对比了librosa、soundfile、...
    99+
    2022-12-30
    Python读取语音文件 python怎么读语音 python语音处理
  • SpringMVC上传文件的两种方法
    在该示例中,阐述了SpringMVC如何上传文件。1、上传页面upload.jsp<body> <form action="/TestSpringMVC3/data/uploadfile" enctype="multi...
    99+
    2023-05-30
    springmvc 上传 sprin
  • java中删除文件/文件夹的3种方法
    1、通过io删除文件 public static void deleteFileByIO(String filePath) { File file = new File(...
    99+
    2023-08-31
    java 开发语言
  • jsp 实现上传文件的两种方法
    在用Java开发企业器系统的使用,特别是涉及到与办公相关的软件开发的时候,文件的上传是客户经常要提到的要求.因此有 一套很好文件上传的解决办法也能方便大家在这一块的开发.........[@more@]在用Java开发企业器系统的使用,特别...
    99+
    2023-06-03
  • SpringBoot 常用读取配置文件的 3 种方法!
    我们在SpringBoot框架进行项目开发中该如何优雅的读取配置呢?或者说对于一些List或者Map应该如何配置呢? 本篇主要解决如下几个问题: Spring Boot有哪些常用的读取配置文件方式? 1)使用 @Value 读取配置文件 2...
    99+
    2023-08-17
    java 数据库 mysql 面试 服务器
  • Java中的多种文件上传方式总结
    目录请求类型单文件上传多文件上传多文件单字段上传多文件多字段上传请求类型 单文件上传 //上传单个文件 @ResponseBody @RequestMap...
    99+
    2024-04-02
  • java实现文件切片上传百度云+断点续传的方法
    前言: 本文代码通过dubbo进行远程调用的接口,如果不使用dubbo,直接将service放到你的service,并稍作修改,redis替换成自己封装的工具即可。下方代码有点多,但...
    99+
    2024-04-02
  • Win10限制上传和下载速度的修改方法
    这篇文章主要介绍Win10限制上传和下载速度的修改方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Internet连接并不总是导致下载和上传速度缓慢的原因。有时,由于各种原因,Windows 10系统电脑会限制速度...
    99+
    2023-06-10
  • Java实现文件上传和下载的方法详解
    目录1、文件上传1.1 介绍1.2 代码实现2、下载2.1 介绍2.2 代码实现1、文件上传 1.1 介绍 文件上传,也称为upload,是指将本地图片、视频、音频等文件上传到服务器...
    99+
    2024-04-02
  • vue上传图片文件的多种实现方法
    最开始百度到各种加headers,最后发现没什么用,有大兄弟知道的可以告知一下哦,记个随笔 原始input标签form表单上传 <input type="file" @ch...
    99+
    2024-04-02
  • Java实现文件上传的方法总结
    目录1.文件上传接收文件接口2.接口主要内容部分3.postman接口调用1.文件上传接收文件接口 Controller成通过post上传方式定义接口,上传文件通常使用post的上传...
    99+
    2023-05-15
    Java实现文件上传 Java文件上传 Java上传
  • 总结SpringBoot常用读取配置文件的3种方法
    文章目录 1、使用 @Value 读取配置文件2、 使用 @ConfigurationProperties 读取配置文件3、读取配置文件中的List 1、使用 @Value 读取配置文件 ...
    99+
    2023-09-03
    spring boot java spring
  • Linux上查找文件的 3 种方法分别是什么
    Linux上查找文件的 3 种方法分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。有时候我们在系统上安装了数十个应用第一种:ls最简单的方法就是借助 ls 命令,因为 ...
    99+
    2023-06-28
  • Java实现文件上传的方法有哪些
    这篇文章给大家分享的是有关Java实现文件上传的方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一. uploadify:uploadify控件的scripts和styles在这里:图片上传JSP:<...
    99+
    2023-05-30
    java
  • java文件上传的实现方法是什么
    Java文件上传的实现方法有多种,以下是其中几种常见的方法:1. 使用Servlet API:通过HttpServletReques...
    99+
    2023-09-05
    java
  • Java使用Sftp和Ftp实现对文件的上传和下载
    sftp和ftp两种方式区别,还不清楚的,请自行百度查询,此处不多赘述。完整代码地址在结尾!! 第一步,导入maven依赖 <!-- FTP依赖包 --> <...
    99+
    2024-04-02
  • 基于HTML5 Ajax文件上传进度条的实现方法
    这篇文章主要介绍“基于HTML5 Ajax文件上传进度条的实现方法”,在日常操作中,相信很多人在基于HTML5 Ajax文件上传进度条的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • 在Java项目中实现文件上传的方法
    在Java项目中实现文件上传的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.jspsmartupload这个组件用起来是挺方便的,不过就是只适合小文件上传,如果大文件上...
    99+
    2023-05-31
    java ava 目中
  • java高并发文件上传的方法是什么
    Java高并发文件上传的方法可以有多种,以下是其中几种常见的方法:1. 使用线程池:可以创建一个固定大小的线程池,每次有文件上传请求...
    99+
    2023-08-23
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作