Java文件拆分与合并

来源:互联网 发布:c语言100经典实例编程 编辑:程序博客网 时间:2024/06/09 14:37

想起来之前写过一个关于java文件拆分与合并的小例子,巩固学习了一下,顺便上传到博客中!





分解上图一个txt文档。

分解成功后会创建一个文件夹,文件夹里面就是分解后的小文件


拆分代码:

package tarena.day1604;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;


public class Test1 {
public static void main(String[] args) {
System.out.println("输入源文件路径:");
String from = new Scanner(System.in).nextLine();
System.out.println("输入拆分文件大小(Kb):");
long size = new Scanner(System.in).nextLong();

try {
chaiFen(from, size*1024);
System.out.println("拆分成功");
} catch (Exception e) {
System.out.println("拆分失败");
e.printStackTrace();//打印完整异常信息
}
}


private static void chaiFen(
String from, long size) throws Exception {
File f = new File(from);
String name = f.getName();
// d:/xxx/xxx/xx/a.jpg_split
File dir = new File(from+"_split");//创建的一个文件包名称
if(dir.exists()) {
File[] files = dir.listFiles();
for (File file : files) {
file.delete();
}
} else {
dir.mkdirs();
}
//////////////////
int fileCount = 0;
long byteCount = 0;
BufferedInputStream in =
new BufferedInputStream(
new FileInputStream(from));
BufferedOutputStream out = null;
int b;
while((b = in.read()) != -1) {

if(out==null || byteCount==size) {
if(out != null) out.close();

File file = 
new File(dir, name+"."+(++fileCount));
out = 
new BufferedOutputStream(
new FileOutputStream(file));
byteCount=0;
}

out.write(b);
byteCount++;
}

in.close();
out.close();
}
}



合并代码text02:


package tarena.day1604;


import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;


public class Test2 {
public static void main(String[] args) {
System.out.println("输入拆分文件目录:");
String from = new Scanner(System.in).nextLine();
System.out.println("输入合并目标文件路径:");
String to = new Scanner(System.in).nextLine();

try {
concat(from, to);
System.out.println("合并完成");
} catch (Exception e) {
System.out.println("合并失败");
e.printStackTrace();
}
}


private static void concat(
String from, String to) throws Exception {
File dir = new File(from);
File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File f) {
if(f.isDirectory()) return false;
return f.getName().matches(".+\\.\\d+");
}
});

Arrays.sort(files, new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
String n1 = o1.getName();
String n2 = o2.getName();
int a = Integer.parseInt(n1.substring(n1.lastIndexOf(".")+1));
int b = Integer.parseInt(n2.substring(n2.lastIndexOf(".")+1));
return a - b;
}
});

FileOutputStream out = 
new FileOutputStream(to);
FileInputStream in = null;
byte[] buf = new byte[8192];
int n;

for(File f: files) {
in = new FileInputStream(f);
while((n = in.read(buf)) != -1) {
out.write(buf,0,n);
}
in.close();
}
out.close();
}
}




dome代码:http://download.csdn.net/detail/bobo8945510/9609840
点击打开链接

























0 0
原创粉丝点击