因为电子书txt格式太大,打开缓慢,想按照章节平均分割成几个小的文档。写了这个小案例。
环境:jdk1.8 + eclipse
话不多说,直接上代码:
package com.splitBigTXT.main;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SplitBigTXT {
/**
* 需要传入的参数
*/
// 源文件路径
private String srcPath ;
// 目标文件夹
private String destDirPath;
// 每几章分割一部分
private int chaps;
/**
* 需要计算的值
*/
// 文件名称
private String fileName;
// 文件的大小
private long fileSize;
// 存储每一部分起始位置和终点位置的
private List<Long> rowsList;
// 目标路径的集合
private List<String> destFiles;
// 分多少个子文件
private int size;
/**
* 有参构造器
* @param srcPath 源文件的路径字符串
* @param destDirPath 目标目录的路径字符串
* @param chaps 每几章分一个子包
*/
public SplitBigTXT(String srcPath,int chaps) {
// 方法重载
this(srcPath,getDestDir(srcPath),chaps);
}
/**
* 根据源文件路径生成目标文件夹
* @param srcPath
* @return
*/
private static String getDestDir(String srcPath) {
String[] srcNames = srcPath.split("\\.");
return srcNames[0];
}
/**
* 重载构造器
* 有参构造器
* @param srcPath 源文件的路径字符串
* @param destDirPath 目标目录的路径字符串
* @param chaps 每几章分一个子包
*/
public SplitBigTXT(String srcPath,String destDirPath,int chaps)