分割设置好分割数量,根据源文件大小来把数据散到子文件中代码如下;
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; } }}