Java實現(xiàn)文件分割和文件合并實例
更新時間:2017年08月01日 08:50:55 作者:左世鈺
本篇文章主要介紹了Java實現(xiàn)文件分割和文件合并實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
文件切割和文件合并這個問題困擾了我有一段時間了(超過一天沒做粗來)。
找了好多博客,本來想轉(zhuǎn)載一個來的 結(jié)果找不到了。很無奈。
只好自己貼代碼上了。
當(dāng)然我會盡力好好寫注釋的。
文件切割器:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws FileNotFoundException, IOException {
File sourceFile = new File("ping.mp3");
// System.out.println(sourceFile.exists());
Scanner scanner = new Scanner(System.in);
int numberOfPieces = 1; //默認(rèn)文件切割的數(shù)量
System.out.println("Enter:"); //提示輸入
numberOfPieces = scanner.nextInt(); //輸入
scanner.close(); //輸入后就關(guān)閉 裝完逼就跑一個道理
long fileLength = sourceFile.length() / numberOfPieces; //分一下每一個小文件的大小
byte[] b = new byte[1024]; //這個不解釋 如果看不懂 就去看IO流去吧
RandomAccessFile raf1 = new RandomAccessFile(sourceFile, "r");
int len = -1;
for(int i = 0; i < numberOfPieces; i++) {
String name = sourceFile.getName() + "." + (i+1);
File file = new File(name);
file.createNewFile();
RandomAccessFile raf2 = new RandomAccessFile(file, "rw");
while((len = raf1.read(b)) != -1) {
raf2.write(b, 0, len); //我覺的這樣寫比raf2.write(b);高明一些
if(raf2.length() > fileLength) //如果太大了就不在這個子文件寫了 換下一個
break;
}
raf2.close();
}
raf1.close();
}
}
文件合并器:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
//文件合并 ping.n
public class Main {
public static void main(String[] args) throws FileNotFoundException, IOException {
File[] files = new File[10];
String name = "ping.";
File file = new File("ping.mp3");
file.createNewFile();
RandomAccessFile in = new RandomAccessFile(file, "rw");
in.setLength(0);
in.seek(0);
byte[] bytes = new byte[1024];
int len = -1;
for(int i = 0; i < files.length; i++) {
files[i] = new File(name + (i + 1));
//System.out.println(files[i].exists());
RandomAccessFile out = new RandomAccessFile(files[i], "rw");
while((len = out.read(bytes)) != -1) {
in.write(bytes, 0, len);
}
out.close();
}
in.close();
}
}
文件合并器就不寫注釋了,因為這是一個逆過程。(懶癌附體)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis代碼生成器Mybatis Generator(MBG)實戰(zhàn)詳解
本文我們主要實戰(zhàn)Mybatis官方的代碼生成器:Mybatis Generator(MBG),掌握它以后,可以簡化大部分手寫代碼,我們只需要寫復(fù)雜邏輯代碼,需要的朋友可以參考下2023-05-05
java如何確定一個鏈表有環(huán)及入口節(jié)點
這篇文章主要介紹了java如何確定一個鏈表有環(huán)及入口節(jié)點,想了解數(shù)據(jù)結(jié)構(gòu)的同學(xué)可以參考下2021-04-04
使用Spring AOP做接口權(quán)限校驗和日志記錄
本文介紹了面向切面編程(AOP)的基本概念、應(yīng)用場景及其在Spring中的實現(xiàn)原理,通過AOP,可以方便地在不修改原有代碼的情況下,實現(xiàn)日志記錄、權(quán)限校驗等功能,以學(xué)生身份證號查詢接口為例,展示了如何定義權(quán)限注解、切面類以及權(quán)限驗證服務(wù),感興趣的朋友一起看看吧2025-01-01
java基于C/S結(jié)構(gòu)實現(xiàn)多線程聊天室
這篇文章主要為大家詳細(xì)介紹了java基于C/S結(jié)構(gòu)實現(xiàn)多線程聊天室,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01

