分割设置好分割数量,根据源文件大小来把数据散到子文件中代码如下;
package word;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
public class Bb {
public static void main(String[] args) throws FileNotFoundException {
// TODO 自动生成的方法存根
String path1="C:";
String name="\\JAVA";
String end=".txt";
String path2;
long l;
long n=2;//设置分割数目
File file = new File(path1+name+end);
File file2;
l=file.length();
InputStream in = null;
PrintStream out = null;
try {
in = new FileInputStream(file);
int tempbyte;
int i=0;
for(i=1;i<=n;i++) {
path2=path1+name+i+end;
file2=new File(path2);
if(file2.exists()) {}
else {
file2.createNewFile();
}
out=new PrintStream(file2);
while ((tempbyte = in.read()) != -1) {
out.print((char)tempbyte);
System.out.write(tempbyte);
if(file2.length()>l/n)break;//子文件到达指定大小就创建下一个文件;
}
}
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
}}
合并就是上面的反过程,即把各个小文件输入到大文件中:
package word;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
public class Bb {
public static void main(String[] args) throws FileNotFoundException {
// TODO 自动生成的方法存根
String path1="C:";
String name="\\JAVA";
String end=".txt";
String path2;
long n=2;
File file = new File(path1+name+end);
File file2;
l=file.length();
InputStream in = null;
PrintStream out = null;
if(file.exists()) {}
else {
file.createNewFile();
}
out=new PrintStream(file);
try {
int tempbyte;
int i=0;
for(i=1;i<=n;i++) {
path2=path1+name+i+end;
file2=new File(path2);
in = new FileInputStream(file2);
while ((tempbyte = in.read()) != -1) {
out.print((char)tempbyte);
}
}
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
}}