免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Java如何使用多線程讀取40M的文件?最好有實(shí)例
java有個(gè)MappedByteBuffer類,他的作用可以把一個(gè)文件映射到內(nèi)存中,然后就能像訪問數(shù)組一樣去讀取這個(gè)文件。這樣不用多線程也可以,你試試

public void readResource() {
  long fileLength = 0;
  final int BUFFER_SIZE = 0x300000;// 3M的緩沖
  
  for(String fileDirectory:this.readResourceDirectory())//得到文件存放路徑,我這里使用了一個(gè)方法從XML文件中讀出文件的
              //存放路徑,當(dāng)然也可以用絕對(duì)路徑來(lái)代替這里的fileDriectory
  {
   File file = new File(fileDirectory);
   fileLength = file.length();
   try {
    MappedByteBuffer inputBuffer =
     new RandomAccessFile(file,"r").getChannel().map(FileChannel.MapMode.READ_ONLY, 0, fileLength);//讀取大文件
    
    byte[] dst = new byte[BUFFER_SIZE];//每次讀出3M的內(nèi)容
    
    for(int offset=0; offset < fileLength; offset+= BUFFER_SIZE)
    {
       if(fileLength - offset >= BUFFER_SIZE)
       {
          for(int i = 0;i < BUFFER_SIZE;i++)
          dst = inputBuffer.get(offset + i);
       }
       else
       {
         for(int i = 0;i < fileLength - offset;i++)
               dst = inputBuffer.get(offset + i);
        }
       //將得到的3M內(nèi)容給Scanner,這里的XXX是指Scanner解析的分隔符
       Scanner scan = new Scanner(new ByteArrayInputStream(dst)).useDelimiter("XXX");
       while(scan.hasNext())
       {
           //這里為對(duì)讀取文本解析的方法
       }        
      scan.close();
     }
   } catch (Exception e)
   {
    e.printStackTrace();
   }
  }
}

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java一次性查詢幾十萬(wàn),幾百萬(wàn)數(shù)據(jù)解決辦法
實(shí)現(xiàn)自己的數(shù)據(jù)庫(kù)一
Socket傳輸大文件(發(fā)送與接收)
Android視頻編輯器(五)音頻編解碼、從視頻中分離音頻、音頻混音、音頻音量調(diào)節(jié)等
用Java簡(jiǎn)單實(shí)現(xiàn)文件分割與合并
文件句柄操作,可讀socke后將文件放在本地處理后輸出
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服