[Java] Java中通过内存映射进行大文件的读写操作 →→→→→进入此内容的聊天室

来自 , 2020-09-05, 写在 Java, 查看 111 次.
URL http://www.code666.cn/view/770c0e7e
  1. package test;
  2.  
  3. import java.io.BufferedInputStream;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.IOException;
  7. import java.io.RandomAccessFile;
  8. import java.nio.MappedByteBuffer;
  9. import java.nio.channels.FileChannel;
  10.  
  11. public class Test {
  12.  
  13.        
  14.         public static void main(String[] args) {
  15.                 try {
  16.                         FileInputStream fis=new FileInputStream("/home/tobacco/test/res.txt");
  17.                         int sum=0;
  18.                         int n;
  19.                         long t1=System.currentTimeMillis();
  20.                         try {
  21.                                 while((n=fis.read())>=0){
  22.                                         sum+=n;
  23.                                 }
  24.                         } catch (IOException e) {
  25.                                 // TODO Auto-generated catch block
  26.                                 e.printStackTrace();
  27.                         }
  28.                         long t=System.currentTimeMillis()-t1;
  29.                         System.out.println("sum:"+sum+"  time:"+t);
  30.                 } catch (FileNotFoundException e) {
  31.                         // TODO Auto-generated catch block
  32.                         e.printStackTrace();
  33.                 }
  34.                
  35.                 try {
  36.                         FileInputStream fis=new FileInputStream("/home/tobacco/test/res.txt");
  37.                         BufferedInputStream bis=new BufferedInputStream(fis);
  38.                         int sum=0;
  39.                         int n;
  40.                         long t1=System.currentTimeMillis();
  41.                         try {
  42.                                 while((n=bis.read())>=0){
  43.                                         sum+=n;
  44.                                 }
  45.                         } catch (IOException e) {
  46.                                 // TODO Auto-generated catch block
  47.                                 e.printStackTrace();
  48.                         }
  49.                         long t=System.currentTimeMillis()-t1;
  50.                         System.out.println("sum:"+sum+"  time:"+t);
  51.                 } catch (FileNotFoundException e) {
  52.                         // TODO Auto-generated catch block
  53.                         e.printStackTrace();
  54.                 }
  55.                
  56.                 MappedByteBuffer buffer=null;
  57.                 try {
  58.                         buffer=new RandomAccessFile("/home/tobacco/test/res.txt","rw").getChannel().map(FileChannel.MapMode.READ_WRITE, 0, 1253244);
  59.                         int sum=0;
  60.                         int n;
  61.                         long t1=System.currentTimeMillis();
  62.                         for(int i=0;i<1253244;i++){
  63.                                 n=0x000000ff&buffer.get(i);
  64.                                 sum+=n;
  65.                         }
  66.                         long t=System.currentTimeMillis()-t1;
  67.                         System.out.println("sum:"+sum+"  time:"+t);
  68.                 } catch (FileNotFoundException e) {
  69.                         // TODO Auto-generated catch block
  70.                         e.printStackTrace();
  71.                 } catch (IOException e) {
  72.                         // TODO Auto-generated catch block
  73.                         e.printStackTrace();
  74.                 }
  75.  
  76.         }
  77.  
  78. }
  79.  
  80.  
  81. //java/6477

回复 "Java中通过内存映射进行大文件的读写操作"

这儿你可以回复上面这条便签

captcha