欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)大文件的切割與合并操作示例

 更新時間:2018年07月02日 09:21:50   作者:HiBoyljw  
這篇文章主要介紹了Java實現(xiàn)大文件的切割與合并操作,結(jié)合實例形式分析了java基于io及util操作大文件按指定個數(shù)分割與合并相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Java實現(xiàn)大文件的切割與合并操作。分享給大家供大家參考,具體如下:

這里實現(xiàn)對大文件的切割與合并。

按指定個數(shù)切(如把一個文件切成10份)或按指定大小切(如每份最大不超過10M),這兩種方式都可以。

在這里我只是給大家寫下我自己的一點簡單的代碼:

package io2;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import javax.swing.JFileChooser;
public class FileSplitDemo {
/**
* 實現(xiàn)對大文件的切割與合并。 按指定個數(shù)切(如把一個文件切成10份)或按指定大小切(如每份最大不超過10M),這兩種方式都可以。
*/
public static void main(String[] args) {
JFileChooser jfc = new JFileChooser();// Swing中的選擇文件
// 選擇文件
int result = jfc.showOpenDialog(null);// 顯示框架用于選擇文件
File file = null;// 要切割的文件
File dest = null;// 目的地文件
try {
if (result == JFileChooser.APPROVE_OPTION) {// 選中文件
// 切割文件
file = jfc.getSelectedFile();// 用戶選擇的文件
dest = new File(file.getParent(), "spliFile");
cutingFile(file, dest);// 切割方法
// 2合并(運行時,直接對剛才切割的那些文件碎片進(jìn)行合并)
String fileName = file.getName();
mergeDemo(dest, fileName);// 合并文件
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void mergeDemo(File dest, String fileName)
throws IOException {
// 健壯性防護(hù)(用File對象去開道)
if (!dest.exists()) {
throw new RuntimeException("文件不存在");
}
// 用一個文件數(shù)組將里面的文件都裝起來
File parth[] = dest.listFiles();// 返回一個抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中的文件。
if (parth.length == 0) {
throw new RuntimeException("碎片不存在");
}
// y用序列流來合并
ArrayList<FileInputStream> list = new ArrayList<FileInputStream>();
// for (int i = 0; i < parth.length; i++) {
// list.add(new FileInputStream(parth[i]));//不能這樣,這樣合并出來的文件是順序亂的
// }
for (int i = 0; i < parth.length; i++) {
list.add(new FileInputStream(new File(dest, fileName + (i + 1)
+ "part")));// 套接技術(shù),文件加的順序要和原文件一樣
}
// 枚舉對象接口
Enumeration<FileInputStream> en = Collections.enumeration(list);
SequenceInputStream sq = new SequenceInputStream(en);
// 寫入到新文件中
FileOutputStream fou = new FileOutputStream(new File(dest, fileName));
byte buf[] = new byte[1024];
sq.read(buf);
int len = 0;
while ((len = sq.read(buf)) > 0) {
fou.write(buf, 0, len);
}
fou.close();
sq.close();
}
private static void cutingFile(File source, File dest) {
// 切割
try {
FileInputStream fis = new FileInputStream(source);
if (!dest.exists()) {// 文件操作IO流要判斷文件是否存在。
dest.mkdir();
}
byte buf[] = new byte[1024 * 1024];// 1M
fis.read(buf);
int len = 0;
int cout = 1;
while ((len = fis.read(buf)) != -1) {
// 用OUT流來切割文件
FileOutputStream fout = new FileOutputStream(new File(dest,
source.getName() + (cout++) + "part"));
fout.write(buf, 0, len);
fout.close();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

文件切割:把一個文件切割成多個碎片,每個碎片的大小不超過1M。自己可把功能進(jìn)一步擴(kuò)展:切割前的文件名、長度,切割后的碎片個數(shù)、文件名等信息可寫到第一個碎片中或另外用properties把這些寫到配置文件中。

文件合并:這里簡單假設(shè)已知被合并目錄的File對象和原文件的名字。其實這些完全可以做成活的,如把這些信息保存在碎片文件或配置文件,也可以同樣用文件選擇對話框來讀取用戶的選擇。

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • Java實現(xiàn)將png格式圖片轉(zhuǎn)換成jpg格式圖片的方法【測試可用】

    Java實現(xiàn)將png格式圖片轉(zhuǎn)換成jpg格式圖片的方法【測試可用】

    這篇文章主要介紹了Java實現(xiàn)將png格式圖片轉(zhuǎn)換成jpg格式圖片的方法,涉及java文件讀寫及圖形創(chuàng)建等相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • mybatis空值插入處理的解決方法

    mybatis空值插入處理的解決方法

    本文主要介紹了mybatis空值插入處理的解決方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java實現(xiàn)鼠標(biāo)拖放功能的方法

    Java實現(xiàn)鼠標(biāo)拖放功能的方法

    這篇文章主要介紹了Java實現(xiàn)鼠標(biāo)拖放功能的方法,很實用的功能,需要的朋友可以參考下
    2014-07-07
  • Java中new與clone操作對象的比較方法舉例

    Java中new與clone操作對象的比較方法舉例

    這篇文章主要給大家介紹了關(guān)于Java中new與clone操作對象的比較方法,在java中對象的誕生是我們開發(fā)人員new出來的,對象的使用也是我們開發(fā)人員進(jìn)行操作的,需要的朋友可以參考下
    2024-07-07
  • Java代碼審計之URL重定向的問題解決

    Java代碼審計之URL重定向的問題解決

    URLRedirect url重定向漏洞也稱url任意跳轉(zhuǎn)漏洞,網(wǎng)站信任了用戶的輸入導(dǎo)致惡意攻擊,本文主要介紹了Java代碼審計之URL重定向的問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • Mybatis resultType返回結(jié)果為null的問題排查方式

    Mybatis resultType返回結(jié)果為null的問題排查方式

    這篇文章主要介紹了Mybatis resultType返回結(jié)果為null的問題排查方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 輕松掌握java裝飾者模式

    輕松掌握java裝飾者模式

    這篇文章主要幫助大家輕松掌握java裝飾者模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Java中結(jié)束循環(huán)的方法

    Java中結(jié)束循環(huán)的方法

    這篇文章主要介紹了Java中結(jié)束循環(huán)的方法,文中有段代碼在return,結(jié)束了整個main方法,即使輸出hello world的語句位于循環(huán)體外,也不會被執(zhí)行,對java結(jié)束循環(huán)方法感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • idea中的Maven導(dǎo)包失敗問題解決方案匯總

    idea中的Maven導(dǎo)包失敗問題解決方案匯總

    這篇文章主要介紹了idea中的Maven導(dǎo)包失敗問題解決總結(jié),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • Nacos入門過程的坑--獲取不到配置的值問題

    Nacos入門過程的坑--獲取不到配置的值問題

    這篇文章主要介紹了Nacos入門過程的坑--獲取不到配置的值問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論