Java-->分割文件

--> 通过IO 流将一个文件分割成多份

package com.dragon.java.splitfile;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

/*
 * 分割文件
 */
public class Test {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要分割的文件路径:");
        File file = new File(scanner.next());
        System.out.println("请输入要分割的份数:");
        int n = scanner.nextInt();

        // 创建文件夹存放分割后的文件
        // File parentDir = new File(file.getParent());
        File dir = new File(file.getParent(), "split"); // 创建文件夹存放分割后的文件
        dir.mkdir();

        // 每一段的大小,加 1 为防止数据的丢失
        long partLength = file.length() / n + 1;
        FileInputStream fis = new FileInputStream(file);
        for (int i = 1; i < n + 1; i++) {
            // 定义输出流到子文件中,并设置子文件名
            FileOutputStream fos = new FileOutputStream(new File(dir, "part"
                    + i + "." + file.getName().split("\\.")[1])); // 定义输出流到子文件中

            byte[] buffer = new byte[(int) partLength];
            int len = fis.read(buffer);
            // 将数据写到子文件中
            fos.write(buffer, 0, len);
            fos.close();
        }
        fis.close();
        // 若想要修改文件夹的名字,前提是修改的路径名之前是不存在的
        // file.delete(); // 删除原文件
        // dir.renameTo(file.getParentFile()); // 修改文件夹的名字
    }
}

--> 本来想用这个方法切割一个图片文件,结果发现只有第一份成功,其他的都无效了...

--> 一个图片里面包含的数据字节,包含开始、结束等多种信息,所以即使将所以字节分割成多份,还是会有无效的子文件。

posted on 2016-08-17 13:47  西门吃雪  阅读(333)  评论(0编辑  收藏  举报

导航