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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

6.6(java学习笔记)文件分割(IO综合例子)

發(fā)布時(shí)間:2025/3/8 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 6.6(java学习笔记)文件分割(IO综合例子) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基本思路:

文件分割:將一個(gè)文件分割成若干個(gè)獨(dú)立的文件。

    ? ?設(shè)置分割后小文件文件的字節(jié)數(shù),然后讀取被分割文件,

     將對(duì)應(yīng)的字節(jié)數(shù)寫入分割后的小文件中。

    ? ? 使用seek定位下一次讀取位置。

     

文件合并:將分割后的若干的文件合并成一個(gè)完整的文件。

     按照原有分割順序逐個(gè)讀取分割后的小文件,

     然后以追加的方式寫入合并的文件中。

?

讀取被分割文件將指定字節(jié)數(shù)寫入分割后小文件時(shí),下一次讀取時(shí)要確保當(dāng)前讀取位置是上一次的寫入的終點(diǎn)。

例如文件有5000K,設(shè)置分割后的文件大小1000K,那么第一次從0開(kāi)始讀取1000K寫入小文件1,第二次就要從1000開(kāi)始讀取1000K寫入小文件2.

這時(shí)就需要用到seek()不斷設(shè)置文件讀取位置。

?

seek是RandomAccessFile類中的函數(shù)

構(gòu)造方法,mode為設(shè)置讀寫方法,“”r“為只讀”w”為只寫。

?

?

設(shè)置文件指針偏移量,下一次讀或?qū)憰r(shí),從當(dāng)前設(shè)置的位置開(kāi)始。

read,write方法與輸入輸出流函數(shù)相同。

?

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List;public class FileSplit {private String filePath;//文件路徑private long blockSize;//每一塊大小private int blockNum;//塊個(gè)個(gè)數(shù)private List<String> blockName;//每一塊名稱private String [] name;public FileSplit(){this.blockName = new ArrayList<String>();}public FileSplit(String filePath){this(filePath,1024);//未知的尺寸則默認(rèn)1024 }public FileSplit(String filePath, long blockSize){this();this.filePath = filePath;this.blockSize = blockSize;init();}public String getFilePath() {return filePath;}public void setFilePath(String filePath) {this.filePath = filePath;}public long getBlockSize() {return blockSize;}public void setBlockSize(long blockSize) {this.blockSize = blockSize;}public int getBlockNum() {return blockNum;}public void setBlockNum(int blockNum) {this.blockNum = blockNum;}public List<String> getBlockName() {return blockName;}public void setBlockName(List<String> blockName) {this.blockName = blockName;}private void initBlockName(String destPath){name = new File(filePath).getName().split("\\.");for(int i = 0; i < blockNum; i++){blockName.add(i,destPath + "\\" + name[0] + "_" + i + "." +name[1]);}}public void init(){File src = new File(filePath);//路徑名不存在,或該路徑表示的文件不存,或是文件夾在則結(jié)束。if(filePath == null || !src.exists()||src.isDirectory()){return;}if(blockSize >= src.length())this.blockSize = src.length();this.blockNum = (int)Math.ceil(src.length()*1.0/blockSize);}//destPath分割文件存放目錄public void split(String destPath){//分割函數(shù)initBlockName(destPath);//初始化分割后的文件名long start = 0;for(int i = 0; i < blockNum; i++){if(i == blockNum - 1)//計(jì)算最后一塊大小blockSize = new File(filePath).length()%blockSize;split_m(i,start,blockSize);//參數(shù)含義:第i塊,讀取位置,讀取內(nèi)容大小start += blockSize;//更新起始位置// System.out.println(start); }}//開(kāi)始分割,每次分割一塊private void split_m(int blockNum,long start,long blockSize){int len = 0;byte[] flush = new byte[1024];RandomAccessFile raf = null;//源文件BufferedOutputStream bos = null;//分割后文件try {bos = new BufferedOutputStream(new FileOutputStream(new File(blockName.get(blockNum))));raf = new RandomAccessFile(new File(filePath),"r");try {raf.seek(start);//確定讀取位置while(-1 != (len = raf.read(flush))){//當(dāng)前塊分割完成或文件已讀取完跳出循環(huán)。//System.out.printf("%d %d %d %s\n",start,blockSize,len,blockName.get(blockNum));if((blockSize - len) >=0){//當(dāng)前塊大小-寫入字節(jié)數(shù),判斷剩余字節(jié)bos.write(flush,0,len);//如果塊剩余大小大于讀取字節(jié)數(shù),則寫入讀取字節(jié)數(shù)blockSize -= len;}else{//如果小于,則寫入當(dāng)前塊剩余字節(jié)數(shù)bos.write(flush, 0, (int)blockSize);break;//分塊文件已寫滿,跳出當(dāng)前循環(huán) }}bos.flush();bos.close();raf.close();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}} catch (FileNotFoundException e) {// TODO Auto-generated catch block e.printStackTrace();}}public void Merge(String mergePath){//合并文件夾路徑int len;byte[] flush = new byte[1024];InputStream is = null;OutputStream bos = null;for(int i = 0; i < blockNum; i++){try {//每次將一個(gè)分割后的文件寫入合并文件中。//寫入方法為追加bos = new BufferedOutputStream(new FileOutputStream(new File(mergePath,"merge." + name[1]),true));is = new BufferedInputStream(new FileInputStream(new File(blockName.get(i))));while(-1 != (len = is.read(flush))){//直到被分割的單個(gè)小文件讀取完is.read(flush);//將讀取內(nèi)容放入flushbos.write(flush,0,len);//將讀取內(nèi)容寫入文件。 }bos.flush();bos.close();is.close();//釋放當(dāng)前資源,下次讀取下一個(gè)小文件。} catch (FileNotFoundException e) {// TODO Auto-generated catch block e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}} } public class Main {public static void main(String[] args){FileSplit f = new FileSplit("F:\\依風(fēng)\\Desktop\\temp.txt",500);//被分割文件,分割后的字節(jié)數(shù)f.split("F:\\依風(fēng)\\Desktop");//分割后小文件的存放位置f.Merge("F:\\依風(fēng)\\Desktop");//合并后大文件的存放位置} }

轉(zhuǎn)載于:https://www.cnblogs.com/huang-changfan/p/9908096.html

總結(jié)

以上是生活随笔為你收集整理的6.6(java学习笔记)文件分割(IO综合例子)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩激情在线一区二区三区 | 天堂在线1 | 黑人精品一区二区三区 | 国产精品第1页 | 中文字幕亚洲一区二区三区五十路 | 欧美激情在线观看一区 | 最好看的2019年中文视频 | 日韩av在线不卡 | 青草视频在线播放 | 免费一区二区视频 | 久久久久五月天 | 日韩精品在线一区二区三区 | 中文字幕在线视频精品 | 91成人免费在线视频 | 亚洲1页 | 伊人天天干 | 久久午夜精品人妻一区二区三区 | 国产精品69久久久久 | 国产专区欧美专区 | 日韩欧美视频免费观看 | 豆国产97在线 | 亚洲 | 性欧美色图 | 国产伦精品一区二区免费 | 日韩精品一区二区在线看 | 久久精品首页 | 国产精品毛片一区二区 | 欧美日韩一二三区 | 欧美体内she精高潮 日韩一区免费 | 国产女教师一区二区三区 | 一区二区三区日韩电影 | 欧洲美熟女乱又伦 | 色窝窝无码一区二区三区成人网站 | 成人综合一区二区 | 欧美少妇网 | 福利视频大全 | 久久国产一区二区 | 国产黄色大片在线观看 | 最新国产露脸在线观看 | 91国产一区| 欧亚av在线| 久久久一 | 亚洲另类av | 国产第一草草影院 | 亚洲精品女 | 黄色在线资源 | 黑人黄色一级片 | 国精产品一区一区三区有限公司杨 | 久操视频在线 | 射射色| 福利片第一页 | 成人国产精品蜜柚视频 | 国产清纯白嫩初高中在线观看性色 | 91av不卡| 胖女人做爰全过程 | 国产日日夜夜 | 激情久久免费视频 | 伊人久久av | 在线不卡av | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 黄色福利站 | 98av视频| 一级aaaa毛片 | 欧日韩不卡在线视频 | 一区二区亚洲精品 | 少妇一级淫片免费视频 | 日本熟妇色xxxxx日本免费看 | y11111少妇| 91看大片 | www色综合| 中文字幕在线看高清电影 | 欧美日韩一区二区三区国产精品成人 | av免费亚洲| 精品无人国产偷自产在线 | 超在线视频 | 国模大胆一区二区三区 | 欧美精品一区二区三区三州 | 国产精品xxx| 青青草福利视频 | 秋霞7777鲁丝伊人久久影院 | 卡一卡二av | 日本高清不卡视频 | 一级欧美一级日韩 | 在线观看1区 | 欧美久草视频 | 欧美影视一区二区三区 | 秘密基地在线观看完整版免费 | 国产三级自拍视频 | 午夜黄色在线 | 国产ts在线视频 | 亚洲资源在线播放 | 欧美mv日韩mv国产网站app | 日韩欧美精品中文字幕 | 国产视频一二三区 | 亚洲一线av | 成人香蕉视频在线观看 | 视频日韩 | 中国免费观看的视频 | 人操人人 | 国产麻豆精品一区二区 |