日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java工具类之大文件分片(切割)与合并

發布時間:2024/1/1 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java工具类之大文件分片(切割)与合并 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前在潭州教育教學網站上看了一個視頻關于java大文件的分片與合并

自己在練習的時候遇到一些坑,調試了好長時間

代碼如下:

首先配置一個專門放參數的類

SplitFileParam

public class SplitFileParam {public static String file="C:\\Users\\pc\\Desktop\\photo/1.jpg"; //文件的路徑public static String outfile="C:\\Users\\pc\\Desktop\\photo/out.jpg"; //文件的路徑public static int count=10; //將文件切割成多少份 }

SplitFile

package SplitFileUtil;import jdk.nashorn.internal.runtime.logging.Logger;import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile;public class SplitFile {public static void main(String[] args) {getSplitFile();merge(SplitFileParam.outfile,SplitFileParam.file,10);}/*** 文件分割方法*/public static void getSplitFile() {String file = SplitFileParam.file; //文件的路徑int count = SplitFileParam.count; //文件分割的份數RandomAccessFile raf = null;try {//獲取目標文件 預分配文件所占的空間 在磁盤中創建一個指定大小的文件 r 是只讀raf = new RandomAccessFile(new File(file), "r");long length = raf.length();//文件的總長度long maxSize = length / count;//文件切片后的長度long offSet = 0L;//初始化偏移量for (int i = 0; i < count - 1; i++) { //最后一片單獨處理long begin = offSet;long end = (i + 1) * maxSize; // offSet = writeFile(file, begin, end, i);offSet = getWrite(file, i, begin, end);}if (length - offSet > 0) {getWrite(file, count-1, offSet, length);}} catch (FileNotFoundException e) {System.out.println("沒有找到文件");e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {raf.close();} catch (IOException e) {e.printStackTrace();}}}/*** 指定文件每一份的邊界,寫入不同文件中* @param file 源文件* @param index 源文件的順序標識* @param begin 開始指針的位置* @param end 結束指針的位置* @return long*/public static long getWrite(String file,int index,long begin,long end){String a=file.split(".jpg")[0];long endPointer = 0L;try {//申明文件切割后的文件磁盤RandomAccessFile in = new RandomAccessFile(new File(file), "r");//定義一個可讀,可寫的文件并且后綴名為.tmp的二進制文件RandomAccessFile out = new RandomAccessFile(new File(a + "_" + index + ".tmp"), "rw");//申明具體每一文件的字節數組byte[] b = new byte[1024];int n = 0;//從指定位置讀取文件字節流in.seek(begin);//判斷文件流讀取的邊界while(in.getFilePointer() <= end && (n = in.read(b)) != -1){//從指定每一份文件的范圍,寫入不同的文件out.write(b, 0, n);}//定義當前讀取文件的指針endPointer = in.getFilePointer();//關閉輸入流in.close();//關閉輸出流out.close();} catch (Exception e) {e.printStackTrace();}return endPointer;}/*** 文件合并* @param file 指定合并文件* @param tempFile 分割前的文件名* @param tempCount 文件個數*/public static void merge(String file,String tempFile,int tempCount) {String a=tempFile.split(".jpg")[0];RandomAccessFile raf = null;try {//申明隨機讀取文件RandomAccessFileraf = new RandomAccessFile(new File(file), "rw");//開始合并文件,對應切片的二進制文件for (int i = 0; i < tempCount; i++) {//讀取切片文件RandomAccessFile reader = new RandomAccessFile(new File(a + "_" + i + ".tmp"), "r");byte[] b = new byte[1024];int n = 0;//先讀后寫while ((n = reader.read(b)) != -1) {//讀raf.write(b, 0, n);//寫}}} catch (Exception e) {e.printStackTrace();} finally {try {raf.close();} catch (IOException e) {e.printStackTrace();}}}}

上面是運行后完整的代碼。

下面就說說我遇到坑,也怪我不細心

在分割文件的方法中,將兩個條件弄反了,導致丟失一般的數據

上面是正確的截圖

將兩個條件反過來之后

結果是:

原因就是:

while(in.getFilePointer() <= end && (n = in.read(b)) != -1){while( (n = in.read(b)) != -1&&in.getFilePointer() <= end){

上面是數據的指針是從零開始的

而下面的數據指針是從in讀過之后的位置開始的,就是上面與下面的數據指針位置相差一個之前定義的byte數組長度個長度,這就是我測試是,數據丟失的原因

--------------------- 本文來自 YG青松 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/qq_38553333/article/details/80435392?utm_source=copy

總結

以上是生活随笔為你收集整理的java工具类之大文件分片(切割)与合并的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜激情欧美 | 久久精品人人爽 | 黄色特级视频 | 一二区在线视频 | 亚洲精品影视 | 在线观看911视频 | 四虎综合| 中文字幕系列 | 黄av资源| 成人h动漫精品一区 | 亚洲熟妇av日韩熟妇在线 | 国产人妻精品一区二区三区不卡 | 污污视频在线观看免费 | 黑人操亚洲人 | 欧美日韩欧美日韩在线观看视频 | а中文在线天堂 | 久久伊人精品 | www国产精品内射熟女 | 狠狠久久综合 | 免费黄色小视频 | 波多野结衣伦理 | 少妇被黑人到高潮喷出白浆 | 中文字幕无线精品亚洲乱码一区 | 九九国产 | 国产精品成人国产乱一区 | 99有精品 | 捆绑调教视频网站 | 亚洲激情视频在线观看 | 97视频免费看 | 亚洲欧美国产一区二区 | 精品国产欧美一区二区三区成人 | 久久国产精品免费视频 | 91精品福利在线 | 高清无打码 | 91日本在线观看 | jizz毛片| 欧亚一区二区三区 | 丁香六月久久 | 夜夜嗨aⅴ一区二区三区 | 免费成人在线电影 | 九色视频国产 | 亚洲一区中文字幕 | 一区二区三区视频免费视 | 东京久久久 | 一区二区精彩视频 | 色婷婷狠狠18禁久久 | 国产日韩欧美精品 | 日本激情网址 | 日韩中文字幕电影 | va免费视频 | 国产欧美一区二区三区国产幕精品 | 青娱乐av| 国产精品第1页 | 亚洲av永久一区二区三区蜜桃 | 久久午夜片 | 日韩不卡的av | 91丝袜视频 | 免费av网站在线观看 | 黄色片xxxx | 成人午夜影视在线观看 | 亚洲一级二级 | 成人教育av在线 | 不卡久久 | 四虎网址在线 | 欧美日韩理论 | 久久国产亚洲 | 久久久国产成人一区二区三区 | 美女诱惑一区二区 | 色女人网 | 午夜两性视频 | 国产毛片一区二区三区 | 亚洲一区二区三区影院 | aaaaa级片| 狠狠网 | 在线观看特色大片免费网站 | 欧美在线观看a | 九九少妇| 成人性爱视频在线观看 | 亚洲无码国产精品 | 五十路在线 | 免费看的一级片 | 青娱乐在线视频观看 | 日本视频一区二区三区 | 2017日日夜夜 | 日韩爽爽视频 | 中文精品无码中文字幕无码专区 | 国产一区二区三区久久久 | 欧美用舌头去添高潮 | 午夜成年视频 | 91久久精品日日躁夜夜躁欧美 | 精品无码久久久久国产 | 亚洲视频在线观看网站 | 日日操夜夜操天天操 | av无码久久久久久不卡网站 | 伊人久久97 | 一级特黄录像免费看 | 动漫av一区二区三区 | 亚洲性综合 | 99人妻少妇精品视频一区 |