java-文件分割

package split;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.io.File;


public class Split {
    public static void main(String[] args) throws IOException {
        RandomAccessFile randomAccessFile = new RandomAccessFile("C:\\Users\\Administrator\\Desktop\\test.pdf", "r");
        int point = 0;//最开始
        long last = 0;//最后
        long lenth = randomAccessFile.length();//总长
        int size = 5;//文件大小,单位:M;

        int i = 0;
        while (true) {
            byte[] buffer = new byte[1024 * 1024];//缓冲区
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
                    new FileOutputStream(
                            new File("C:\\Users\\Administrator\\Desktop\\zz\\test.part" + i++)
                    )
            );

            last = lenth - point;
            if (last > buffer.length * size) {
                for (int j = 0; j < size; j++) {
                    randomAccessFile.read(buffer);
                    bufferedOutputStream.write(buffer);
                    bufferedOutputStream.flush();//保存到磁盘上
                }
            } else {
                byte[] endBuffer = new byte[(int) last];
                randomAccessFile.read(endBuffer);
                bufferedOutputStream.write(endBuffer);
                bufferedOutputStream.close();
                bufferedOutputStream.flush();
                break;
            }
            point += buffer.length * size;
        }
        randomAccessFile.close();

//
//        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
//                10,11,1, TimeUnit.SECONDS,
//                new ArrayBlockingQueue<>(10),
//                new ThreadPoolExecutor.CallerRunsPolicy()
//                //跑着的,排满了后正跑着的和新增的,做完没事干要销毁的,指定时间单位,排队的,叫回没排上队的
//        );
//        Thread thread = new Thread(){
//            @Override
//            public void run() {
//全文复制到这里使用多线程
//            }
//        };
//        threadPoolExecutor.execute(thread);
//        threadPoolExecutor.shutdown();
    }
}

posted @ 2024-11-10 02:40  基础狗  阅读(0)  评论(0编辑  收藏  举报