首页 > 其他 > 详细

文件分割

时间:2020-02-13 19:10:47      阅读:53      评论:0      收藏:0      [点我收藏+]
 1 import java.io.File;
 2 import java.io.FileNotFoundException;
 3 import java.io.IOException;
 4 import java.io.RandomAccessFile;
 5 
 6 public class FileSplitDemo {
 7      public static void main(String[] args) throws IOException {
 8          //分好块以后,调用方法读取每一块
 9          File f=new File("src/com/hh/ThreadDemoe.java");
10          long length=f.length();//文件大小
11          int blockSize=60;//块大小
12          int blockCount=(int)Math.ceil(length*1.0/blockSize);//块数
13          int beginPos=0;
14          int readSize=0;
15          for(int i=0;i<blockCount;i++){
16              beginPos=i*blockSize;
17              if(i<blockCount-1){
18                  readSize=blockSize;
19              }else{
20                  readSize=(int)length%blockSize;
21              }
22              split(i,beginPos,readSize);
23          }
24     }
25      /*
26       * 块数,起始位置,读取长度
27       */
28     private static void split(int i,int beginPos,int actualSize) throws IOException {
29         RandomAccessFile ras=new RandomAccessFile("src/com/hh/ThreadDemoe.java","r");
30         
31          ras.seek(beginPos);//随机读取
32          //读取操作
33          byte[] bys=new byte[10];
34          int len=-1;//接收长度
35          while((len=ras.read(bys))!=-1){
36              
37              if(actualSize>len){//剩余长度大于接收长度
38                  System.out.print(new String(bys,0,len));
39                  actualSize-=len;
40              }else{//剩余长度小于接收长度
41                 System.out.print(new String(bys,0,actualSize)); 
42                 break;
43              }
44          }
45          ras.close();
46     }
}
 1     //将分块和读取放在一起,读取全部文件
 2     private static void readFileSplit() throws FileNotFoundException, IOException {
 3         RandomAccessFile ras=new RandomAccessFile("src/hh/ThreadDemoe.java","r");
 4          long len=ras.length();//文件长度
 5          int blockSize=50;//块大小
 6          int blockNum=(int) Math.ceil((len*1.0)/blockSize);//块数
 7          
 8          byte[] bys=new byte[blockSize];//缓冲数组大小使用块大小
 9          for(int i=0;i<blockNum;i++){
10              ras.seek(i*blockSize);
11              if(i<blockNum-1){
12                  ras.read(bys);
13                  System.out.print(new String(bys,0,blockSize));
14              }else {
15                  int size=ras.read(bys);//文件的最后一块,直接读取返回大小
16                  System.out.print(new String(bys,0,size));
17              }
18          }
19         ras.close();
20     }

 

 1 import java.io.File;
 2 import java.io.FileNotFoundException;
 3 import java.io.IOException;
 4 import java.io.RandomAccessFile;
 5 
 6 public class FileSplitDemo {
 7      public static void main(String[] args) throws IOException {
 8          //分好块以后,调用方法读取每一块
 9          File f=new File("src/com/hh/ThreadDemoe.java");
10          long length=f.length();//文件大小
11          int blockSize=60;//块大小
12          int blockCount=(int)Math.ceil(length*1.0/blockSize);//块数
13          int beginPos=0;
14          int readSize=0;
15          for(int i=0;i<blockCount;i++){
16              beginPos=i*blockSize;
17              if(i<blockCount-1){
18                  readSize=blockSize;
19              }else{
20                  readSize=(int)length%blockSize;
21              }
22              split(i,beginPos,readSize);
23          }
24     }
25      /*
26       * 块数,起始位置,读取长度
27       * 
28       * 跟字节流一样使,就是读写用的一个类new出来的对象
29       */
30     private static void split(int i,int beginPos,int actualSize) throws IOException {
31         RandomAccessFile ras=new RandomAccessFile("src/com/hh/ThreadDemoe.java","r");
32         RandomAccessFile ras2=new RandomAccessFile("ff/"+i+"Copy","rw");
33          ras.seek(beginPos);//随机读取
34          //读取操作
35          byte[] bys=new byte[10];
36          int len=-1;//接收长度
37          while((len=ras.read(bys))!=-1){
38              
39              if(actualSize>len){//剩余长度大于接收长度
40                  ras2.write(bys,0,len);
41                  actualSize-=len;
42              }else{//剩余长度小于接收长度
43                  ras2.write(bys,0,actualSize);
44                 break;
45              }
46          }
47          ras.close();
48     }
49 }

 

文件分割

原文:https://www.cnblogs.com/abtious/p/12304296.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!