文件分割

Posted ynhk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件分割相关的知识,希望对你有一定的参考价值。

package com.test.springboot.util;

import java.io.*;

/**
 * 按行分割文件 工具类
 *
 * @author FX_SKY
 */
public class FileSplitUtil {

    /**
     * @param args
     */
    public static void main(String[] args) {
        splitDataToSaveFile(9,
                "E:\\123\\uploadFile.html",
                "D:\\java\\cuts",
                "UTF-8");
    }

    /**
     * 按行分割文件
     *
     * @param rows                为多少行一个文件
     * @param sourceFilePath      为源文件路径
     * @param targetDirectoryPath 文件分割后存放的目标目录
     * @param coding              编码格式  解决中文乱码
     */
    public static void splitDataToSaveFile(int rows, String sourceFilePath,
                                           String targetDirectoryPath, String coding) {
        // String coding="UTF-8";//UTF-8//GBK
        System.out.println("文件分割开始.....");
        File sourceFile = new File(sourceFilePath);//源文件
        File targetFile = new File(targetDirectoryPath);//目标文件夹
        if (!sourceFile.exists() || rows <= 0 || sourceFile.isDirectory()) {//源文件是否存在
            System.out.println("文件不存在");
            return;
        }
        if (targetFile.exists()) {
            if (!targetFile.isDirectory()) {//判断目标是否是一个目标文件夹
                System.out.println("目标文件不是文件夹");
                return;
            }
        } else {
            targetFile.mkdirs();//不存在创建
        }
        try {

            InputStreamReader in = new InputStreamReader(new FileInputStream(sourceFilePath), coding);
            BufferedReader br = new BufferedReader(in);

            BufferedWriter bw = null;
            String str = "";
            String tempData = br.readLine();//读取行
            int i = 1, s = 0;
            while (tempData != null) {//行若不为空
                str += tempData + "\r\n";
                if (i % rows == 0) {//取余行数  符合所设定的行数  则一起输出,否则继续读
                    bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
                            targetFile.getAbsolutePath() + "/" + (s + 1) + getExtension(sourceFilePath)), coding), 1024);

                    bw.write(str);
                    bw.close();

                    str = "";
                    s += 1;
                }
                i++;
                tempData = br.readLine();
            }
            int t = 0;
            if ((i - 1) % rows != 0) {

                bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
                        targetFile.getAbsolutePath() + "/" + (s + 1) + getExtension(sourceFilePath)), coding), 1024);
                bw.write(str);
                bw.close();
                br.close();
                t = s;
                s += 1;
                System.out.println("最后一个文件输出完成!!");
            }
            in.close();
            int y = i-1;
            int z = 0;
            int x=y%rows;
            if (x== 0) {
                z = y/rows;
            }else {
                z = y/rows+1;
                System.out.println("最后一个文件行数:"+x);
            }
            System.out.println("文件分割完成!!");
            System.out.println("        "+"文件总行数= " + y);
            System.out.println("        "+rows + "行一个文件");
            System.out.println("        "+"结果分成文件个数= " + z);
        } catch (Exception e) {
        }
    }

    //获取后缀名
    public static String getExtension(String filename) {
        String nameSuffix = filename.substring(filename.lastIndexOf("."));
        return nameSuffix;
    }


}

  

以上是关于文件分割的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 片段

如何标记从卷积神经网络的分割算法生成的图像片段?

通过 BPM 将音轨分割成片段,并使用 Superpowered iOS 分析每个片段

java 片段分割共享元素转换

如何在Python中将图像分割成多个片段

split命令