--> 通过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()); // 修改文件夹的名字 } }
--> 本来想用这个方法切割一个图片文件,结果发现只有第一份成功,其他的都无效了...
--> 一个图片里面包含的数据字节,包含开始、结束等多种信息,所以即使将所以字节分割成多份,还是会有无效的子文件。