Java-随机范围内分割大文件

需求

有一份文件,不大,通常电脑可以一次性读取。文件格式为若干行手机号码。将这个文件以随机范围[37~40]进行分割,也就是说当读取的行数满足随机范围的,则分割生成一个包含该行数小文件,剩余不足37行的,独自生成一个文件。
文件每行的内容,由原来"手机号",更改为"手机号,text"格式。

语言

Java

实现

思路

生成[37~40]的随机数
通过commons.io进行读取原文件
通过StringBuilder进行格式更改,结合字符缓冲进行批量写入操作(写完注意清空
当满足随机范围,并且未到文件末行时,生成随机数行数的文件,到达文件末行时,无论是否满足随机范围,直接写入一个文件。

代码

public class SplitMobileFile {
  //写文件操作
    public void  writeFile(String writeDirectoryPath,String fileName,String sb){
        File file = new File(writeDirectoryPath+fileName);
        OutputStreamWriter writer = null;
        BufferedWriter bw = null;
        
        try {
            OutputStream os = new FileOutputStream(file);
            writer = new OutputStreamWriter(os);
            bw = new BufferedWriter(writer);
            FileUtils.writeStringToFile(file,sb ,true);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
             try {
                bw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    //读取文件操作
    public void readFile(String readFilePath,String writeDirectoryPath,String fileName){
        int count = 0;
        int flag = 0;
        Random rand = new Random();
        int randNum = rand.nextInt(3)+37;
        StringBuilder sb = new StringBuilder();
        LineIterator it = null;
        try {
            BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(readFilePath)));
            it= new LineIterator(reader);
            while (it.hasNext()) {
                String oneLine = it.nextLine()+",text";
                sb.append(oneLine+"\r\n");//windows下换行符需注意一下
                if(count

你可能感兴趣的:(Java-随机范围内分割大文件)