正文前先来一波福利推荐:

福利一:

百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。

福利二:

毕业答辩以及工作上各种答辩,平时积累了不少精品PPT,现在共享给大家,大大小小加起来有几千套,总有适合你的一款,很多是网上是下载不到。

获取方式:

微信关注 精品3分钟 ,id为 jingpin3mins,关注后回复   百万年薪架构师 ,精品收藏PPT  获取云盘链接,谢谢大家支持!

 

------------------------正文开始---------------------------

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

    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();
            }
        }

    }
posted on 2019-12-05 11:16  小勇DW3  阅读(595)  评论(0编辑  收藏  举报