• 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()); // 修改文件夹的名字
        }
    }

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

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

  • 相关阅读:
    常见的单链表题目
    一个string类的几个函数
    strcpy和memcpy的区别
    字符串及 strcpy几种写法
    什么函数不能声明为虚函数
    STL中Vector和List的底层数据结构
    C/C++堆、栈及静态数据区详解
    tcp四次握手
    几个知识点
    内存对齐的规则与作用
  • 原文地址:https://www.cnblogs.com/xmcx1995/p/5779703.html
Copyright © 2020-2023  润新知