zoukankan      html  css  js  c++  java
  • 课后作业----大文件分割

    编写一个文件分割工具,能把一个大文件分割成多个小的文件。并且能再次把它们合并起来得到完整的文件。

    思路:大文件分割其实就是把文件内容平均分到多个小文件,可以定义一个大小作为平均大小,然后才进行文件操作。至于合并,则把这几个文件内容依次读入到一个新的文件。

    代码:

    package com.testHomework;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    public class FileBreakUp {
        private static int name = 1;
        public static void main(String[] args) {
            File file1 = new File("D:/java文件/Harry Potter and the Sorcerer's Stone.txt");
            File file2 = new File("D:/java文件");
            //BreakUp(file1,file2,1024*100);
            Mix(new File("D:/java文件/mix.txt"),new File("D:/java文件"));
        }
        
        // 文件分割
        public static void BreakUp(File file1,File file2,int size) {
            File file = file1;
            InputStream is = null;
            OutputStream os = null;
    
            try {
                is = new FileInputStream(file);
                byte[] flush = new byte[size];
                int len = -1;
                try {
                    while((len=is.read(flush))!=-1) {        
                        os = new FileOutputStream(file2.getAbsolutePath()+File.separatorChar+"break"+name+".txt");
                        os.write(flush, 0, len);
                        os.close();
                        name++;
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
        // 文件合并
        public static void Mix(File file1,File file2) {
            File file = file2;
            InputStream is = null;
            OutputStream os = null;
            try {
                os = new FileOutputStream(file1);
                byte[] flush = new byte[1024*100];
                int len = -1,num=1;
                try {
                    while(num<=5) {
                        is = new FileInputStream(file2.getAbsolutePath()+File.separatorChar+"break"+num+".txt");
                        while((len=is.read(flush))!=-1) {                                        
                            os.write(flush, 0, len);
                        }
                        num++;
                    }        
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        os.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    }

    运行结果:拆分结果:

     合并结果:

  • 相关阅读:
    使用.sig签名验证文件
    ubuntu server 安装nextcloud12
    centos 搭建owncloud私有云
    archlinux错误:无法提交处理 (无效或已损坏的软件包)
    Oracle数据库-建库、建表空间,建用户
    JS中几种遍历方式
    常用的正则表达式
    JavaWeb中GET请求url传参中文乱码问题
    常用的ajax方式
    table中td内容过长自动换行
  • 原文地址:https://www.cnblogs.com/yangxiao-/p/11832323.html
Copyright © 2011-2022 走看看