将一个大文件进行拆分为多个小文件源码
2018-01-09 16:26
411 查看
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 对一个大文件进行拆分为几个小文件
* @author jianhong
*
*/
public class SplitFile {
/**
* 对一个大文件进行拆分成多个小文件
* @param args 第一个参数设置:大文件的文件全路径 第二个参数设置:输出文件的路劲以及文件名(注意文件名称的后缀名在程序中进行设置,默认为: .txt文件后缀名,若要更改请在程序代码中进行更改)
* 第三个参数设置:拆分成小文件的总的个数 第四个参数设置 :每个小文件包含有多少条数据,最后一个小文件除外
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//先读大文件数据,即获取大文件的全路径
String path=args[0];
File file = new File(path);
//创建buffer字符输入流
BufferedReader br=null;
//创建文件输出流
FileWriter fw =null;
BufferedWriter bw =null;
if(file.isFile() && file.exists()) {
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
br = new BufferedReader(isr);
String conditions = null;
String nums = args[2]; //输入拆分成小文件的总个数
int num = Integer.parseInt(nums);
int number =Integer.parseInt(args[3]); //设置每一个小文件应该包含多少条条数
String output=null;
int count=0;
//设置输出小文件的文件路径和小文件的文件名称
String out=args[1];
//创建小文件路径
for (int i = 0; i < num; i++) {
//output ="E:/工作表单/用户画像文件夹/output测试文件_"+i+".txt";
//拼接所有小文件的后缀名
output =out+"_000"+i+".txt";
//System.out.println("输出第"+i+"文件:"+output);
File outfile=new File(output);
if (!outfile.exists()) {
boolean createFile = outfile.createNewFile();
if (createFile) {
System.err.println("创建文件:"+output+"成功");
}else {
System.out.println("文件创建失败!!!!!");
}
}
fw= new FileWriter(outfile, true);
bw= new BufferedWriter(fw);
//读大文件数据一行
while ((conditions = br.readLine()) != null) {
try {
bw.append(conditions);
bw.append("\r\n");
System.out.println(conditions);
//判断是否达到小文件的条数
count++;
System.out.println("这是第"+count+"条数据"); //count的值是1
} catch (IOException e) {
e.printStackTrace();
}
if (count == (i+1)*number ) {
System.out.println("已完成第"+i+"文件");
break;
}
}
bw.flush();
bw.close();
}
//判断这个拆分的小文件的个数是否合理
if (conditions !=null) {
count +=1;
if (count > num*number ) {
System.err.println("警告:大文件的总条数大于拆分小文件的总条数,所读大文件的条数大于:"+(count-1)+"条;若数据非常重要请先删除小文件,重新设置小文件的个数,并重新进行拆分操作");
}
}else {
System.err.println("当前已入条数为:"+count+"条");
}
}
br.close();
}
}
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 对一个大文件进行拆分为几个小文件
* @author jianhong
*
*/
public class SplitFile {
/**
* 对一个大文件进行拆分成多个小文件
* @param args 第一个参数设置:大文件的文件全路径 第二个参数设置:输出文件的路劲以及文件名(注意文件名称的后缀名在程序中进行设置,默认为: .txt文件后缀名,若要更改请在程序代码中进行更改)
* 第三个参数设置:拆分成小文件的总的个数 第四个参数设置 :每个小文件包含有多少条数据,最后一个小文件除外
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//先读大文件数据,即获取大文件的全路径
String path=args[0];
File file = new File(path);
//创建buffer字符输入流
BufferedReader br=null;
//创建文件输出流
FileWriter fw =null;
BufferedWriter bw =null;
if(file.isFile() && file.exists()) {
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "utf-8");
br = new BufferedReader(isr);
String conditions = null;
String nums = args[2]; //输入拆分成小文件的总个数
int num = Integer.parseInt(nums);
int number =Integer.parseInt(args[3]); //设置每一个小文件应该包含多少条条数
String output=null;
int count=0;
//设置输出小文件的文件路径和小文件的文件名称
String out=args[1];
//创建小文件路径
for (int i = 0; i < num; i++) {
//output ="E:/工作表单/用户画像文件夹/output测试文件_"+i+".txt";
//拼接所有小文件的后缀名
output =out+"_000"+i+".txt";
//System.out.println("输出第"+i+"文件:"+output);
File outfile=new File(output);
if (!outfile.exists()) {
boolean createFile = outfile.createNewFile();
if (createFile) {
System.err.println("创建文件:"+output+"成功");
}else {
System.out.println("文件创建失败!!!!!");
}
}
fw= new FileWriter(outfile, true);
bw= new BufferedWriter(fw);
//读大文件数据一行
while ((conditions = br.readLine()) != null) {
try {
bw.append(conditions);
bw.append("\r\n");
System.out.println(conditions);
//判断是否达到小文件的条数
count++;
System.out.println("这是第"+count+"条数据"); //count的值是1
} catch (IOException e) {
e.printStackTrace();
}
if (count == (i+1)*number ) {
System.out.println("已完成第"+i+"文件");
break;
}
}
bw.flush();
bw.close();
}
//判断这个拆分的小文件的个数是否合理
if (conditions !=null) {
count +=1;
if (count > num*number ) {
System.err.println("警告:大文件的总条数大于拆分小文件的总条数,所读大文件的条数大于:"+(count-1)+"条;若数据非常重要请先删除小文件,重新设置小文件的个数,并重新进行拆分操作");
}
}else {
System.err.println("当前已入条数为:"+count+"条");
}
}
br.close();
}
}
相关文章推荐
- 如何将一个PDF文件页面进行的拆分为多个PDF文件
- 对一个数据库分成多个数据库文件,并且进行分组
- 如何将多个vmdk文件合并为一个或者将一个vmdk文件拆分为多个
- 深入springMVC------文件上传源码解析(上篇) 最近在项目中,使用springmvc 进行上传文件时,出现了一个问题: org.springframework.web.multipart
- 数据由一个图层按照要素拆分多个文件或图层,俗称分解、扇出、拆分
- C#将一个excel工作表根据指定范围拆分为多个excel文件
- 拆分一个Excel文件为多个
- 一个简单的根据行数对大文件进行分片的python程序
- 对于一个文件夹中的所有txt文件进行遍历的程序
- 编写一个程序, 将 a.txt 文件中的单词与 b.txt 文件中的 单词交替合并到 c.txt 文件中, a.txt 文件中的单词用回车符 分隔, b.txt 文件中用回车或空格进行分隔。
- 一个用于拆分文件的过程
- 将一个数组按照固定大小进行拆分成数组
- java IO流(二) ----将一个文件拆分为多个子文件
- 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔.
- 一个tomcat启动多个端口进行服务
- JavaScript 将多个引用(样式或者脚本)放入一个文件进行引用
- C#技巧【调用线程无法访问此对象,因为另一个线程拥有该对象的问题的解决办法】【C#读写EXCEL源码提示“office检测到此文件存在一个问题。为帮助保护您的计算机,不能打开此文件”的解决】
- 能把opencv的源码也进行调试吗?(需要pdb文件才行)
- 对keil自带的头文件进行更改存在的一个潜在问题
- 写一个方法进行文件的复制