我是靠谱客的博主 发嗲犀牛,最近开发中收集的这篇文章主要介绍Java实现文件的拆分合并一、文件拆分的思路:二、文件合并的思路,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、文件拆分的思路:

 

        定义好每块文件的大小,先根据文件大小,计算出块数,然后把每一块读入缓冲区,从缓冲区写到定好的目录中

public static void main(String[] args) throws IOException {
		//源文件地址
		File sourceFile = new File("E:\chunck\share.mp4");
		//块文件目录
		String chunkFileFolder = "E:\chunck\chunks";
		//块文件大小
		int chunkFileSize = 1 * 1024 * 1024;
		//块文件数量
		int chunkFileNum = (int) Math.ceil(sourceFile.length() * 1.0 / chunkFileSize);
		//
		RandomAccessFile readFile = new RandomAccessFile(sourceFile, "r");
		byte[] bytes = new byte[1024];
		for(int i = 0; i < chunkFileNum; i++) {
			File chunkFile = new File(chunkFileFolder  + "\" + i);
			int len = -1;
			//创建块文件
			RandomAccessFile writeFile = new RandomAccessFile(chunkFile, "rw");
			while((len = readFile.read(bytes)) != -1) {
				writeFile.write(bytes, 0 ,len);
				//如果块文件大小达到1M,就读下一块
				if(chunkFile.length() >= chunkFileSize) {
					break;
				}
			}
			writeFile.close();
		}
		readFile.close();
	}

二、文件合并的思路

        把拆分后的文件,先按照名称排序,防止合并的时候顺序错乱,导致文件损坏。

public static void main(String[] args) throws IOException {
        //块文件目录
        String chunkFileFolderPath = "E:\chunck\chunks";
        //获取块文件对象
        File chunkFileFolder = new File(chunkFileFolderPath);
        //块文件列表
        File[] files = chunkFileFolder.listFiles();
        //将文件排序
        List<File> filesList = Arrays.asList(files);
        Collections.sort(filesList, (o1, o2) -> {
            if(Integer.parseInt(o1.getName()) > Integer.parseInt(o2.getName())){
                return 1;
            }
            return -1;
        });
        //合并后的文件
        File mergerFile = new File("E:\chunck\share_merger.mp4");
        //创建新文件
        boolean newFile = mergerFile.createNewFile();
        //创建写对象
        RandomAccessFile writeFile = new RandomAccessFile(mergerFile, "rw");

        byte[] b = new byte[1024];
        for(File chunkFile : filesList){
            int len = -1;
            //创建读块文件的对象
            RandomAccessFile readFile = new RandomAccessFile(chunkFile, "r");
            while((len = readFile.read(b)) != -1){
                writeFile.write(b, 0, len);
            }
            readFile.close();
        }
        writeFile.close();
    }

        在文件上传下载的时候,会遇到断点续传的问题,可以根据文件的拆分和合并的思路实现断点续传的功能

最后

以上就是发嗲犀牛为你收集整理的Java实现文件的拆分合并一、文件拆分的思路:二、文件合并的思路的全部内容,希望文章能够帮你解决Java实现文件的拆分合并一、文件拆分的思路:二、文件合并的思路所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部