Java文件切割
切割文件:論壇等可以上傳附件文件,但是對文件的大小有限制,這時可以將整個文件切割成多個子文件(碎片文件)。別人可以下載這些子文件,然后將其合并在一起,就可以正常查閱。
????????
切割文件的方式:
1、? 不管文件大小,固定子(碎片)文件的個數。比如:總文件11M,只能切割3份。
2、? 不管文件大小,固定每份碎片文件的大小。比如:總文件11M,每個碎片文件2M。
?
/*
?* 切割和合并文件
?*/
public class CutFileTest {
??? public static void main(String[] args) throws IOException {
??????? //cutFile();
??????? megerFile();
??? }
??? //合并文件
??? public static void megerFile() throws IOException {
???????
??????? //創建輸出流對象
??????? FileOutputStreamfos = new FileOutputStream("./files/2.jpg");
???????
??????? //使用循環提供碎片文件的名稱
??????? for( int i = 1 ; i <=9 ; i++ ){
??????????? //定義輸入流,和每個碎片文件關聯,讀取碎片文件中的數據
??????????? FileInputStreamfis = new FileInputStream("./parts/"+i+".jpg");
???????????
??????????? //讀寫數據
??????????? byte[] buf = new byte[1024];
??????????? int len = 0;
??????????? while( ( len = fis.read(buf) ) != -1 ){
??????????????? fos.write(buf , 0 , len);
??????????? }
??????????? //關閉輸入流
??????????? fis.close();
??????? }
??????? //關閉輸出流
??????? fos.close();
??? }
??? //演示切割文件
??? public static void cutFile() throws IOException {
?
??????? //定義輸入流讀取文件中的數據
??????? FileInputStreamfis = new FileInputStream("./files/1.jpg");
??????? //定義變量充當碎片文件的名稱
??????? int count = 1;
??????? //定義數組,固定數組的大小為100kb
??????? byte[] buf = new byte[102400/2];
??????? int len = 0;
??????? while( ( len = fis.read(buf) ) != -1 ){
??????????? //定義輸出流,將讀取到的100kb數據寫到文件中
??????????? FileOutputStreamfos = new FileOutputStream("./parts/"+count+".jpg");
??????????? //寫數據
??????????? fos.write(buf, 0, len);
??????????? //關流
??? ??????? fos.close();
??????????? //充當碎片文件的名稱變量變化
??????????? count++;
??????? }
??????? //關閉輸入流
??????? fis.close();
??? }
}
總結
- 上一篇: 网易云祝福酷狗“狗年快乐”,大文娱之战下
- 下一篇: java美元兑换,(Java实现) 美元