前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件分段后,进行分片上传逻辑

文件分段后,进行分片上传逻辑

作者头像
小勇DW3
发布2019-12-10 16:39:29
1.1K0
发布2019-12-10 16:39:29
举报
文章被收录于专栏:小勇DW3小勇DW3

思路:使用RandomAccessFile类,先获取文件的总长度,然后设置分片的大小buff,计算出需要分多少块,最后一块存在不满的buff,进行单独的处理。

代码语言:javascript
复制
    public static void startMultiPartUpload(String file)
    {
        RandomAccessFile randomAccessFile = null;
        RandomAccessFile  out = null;
        try{
            out = new RandomAccessFile("D:\\data\\xxxx", "rw");
            randomAccessFile = new RandomAccessFile(file, "rw");
            long fileLength = randomAccessFile.length();
            //每个分块为1M
            int chunkSize = 1024 * 1024;
            byte[] chunkData = new byte[chunkSize];
            int offset = 0;
            int readLen = 0;
            while (true)
            {
                if (offset >= fileLength) {                                             //当offset偏移与文件长度一致时,停止循环
                    break;
                }
                //将指针指向最新的偏移位
                randomAccessFile.seek(offset);
                if ((readLen = randomAccessFile.read(chunkData, 0, chunkSize)) == -1)   //其实此处返回的长度为实际读取到字节数组中的长度
                {
                    break;
                }

                if(readLen < chunkSize){                                                 //字节数组没有填充满时,进行实际长度的填充
                    byte[] realChunkData = new byte[readLen];
                    System.arraycopy(chunkData, 0, realChunkData, 0, readLen);
                    chunkData = realChunkData;
                }


                out.write(chunkData);



                offset = offset + readLen;
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            try {
                randomAccessFile.close();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档