最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)超大文件的讀寫功能

 更新時間:2019年05月04日 13:29:41   作者:只要你能好  
這篇文章主要為大家詳細介紹了java實現(xiàn)超大文件的讀寫功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

對于幾百M或上G的大文件可使用java nio進行讀寫 , 根據(jù)個人的需求 可能需要將一個超大文件讀寫形成很多較小的文件進行分析,這也不是什么難事,在讀完一個緩沖區(qū)后 更換寫入的對象即可,本文就不做詳細介紹了,有需要的可以聯(lián)系本人。

直接上程序吧

package cn.gzu.readfile;
 import java.io.File; 
 import java.io.IOException; 
 import java.io.RandomAccessFile; 
 import java.nio.ByteBuffer; 
 import java.nio.channels.FileChannel; 
 
 
public class ReadWriteNio { 
 
public static void main(String args[]) throws Exception{ 
 int bufSize = 100; 
 File fin = new File("E:\\jiahui\\2014-09-01.dat"); 
 File fout = new File("E:\\jiahui\\res.txt"); 
 
 System.out.print("開始讀取并重寫文件,請等待...");
 
 FileChannel fcin = new RandomAccessFile(fin, "r").getChannel(); 
 ByteBuffer rBuffer = ByteBuffer.allocate(bufSize); 
 
 FileChannel fcout = new RandomAccessFile(fout, "rws").getChannel(); 
 ByteBuffer wBuffer = ByteBuffer.allocateDirect(bufSize); 
 
 readFileByLine(bufSize, fcin, rBuffer, fcout, wBuffer); 
 
 System.out.print("讀寫完成!"); 
} 
 
 /*讀文件同時寫文件*/
public static void readFileByLine(int bufSize, FileChannel fcin, ByteBuffer rBuffer, 
 FileChannel fcout, ByteBuffer wBuffer){ 
 String enterStr = "\n"; 
 try{ 
 byte[] bs = new byte[bufSize]; 
 
 int size = 0; 
 StringBuffer strBuf = new StringBuffer(""); 
 while((size = fcin.read(rBuffer)) != -1){ 
// while(fcin.read(rBuffer) != -1){ 
 if(size > 1*1024){
 break;
 }
 
 int rSize = rBuffer.position(); 
 rBuffer.rewind(); 
 rBuffer.get(bs); 
 rBuffer.clear(); 
 String tempString = new String(bs, 0, rSize,"UTF-8"); 
 // System.out.println(size+": "+tempString); 
 
 int fromIndex = 0; 
 int endIndex = 0; 
 while((endIndex = tempString.indexOf(enterStr, fromIndex)) != -1){ 
  String line = tempString.substring(fromIndex, endIndex); 
  line = new String(strBuf.toString() + line + "\n"); 
  System.out.println(size+": "+line); 
  //System.out.print("</over/>"); 
  //write to anthone file 
  writeFileByLine(fcout, wBuffer, line); 
 
  strBuf.delete(0, strBuf.length()); 
  fromIndex = endIndex + 1; 
 } 
 if(rSize > tempString.length()){ 
  strBuf.append(tempString.substring(fromIndex, tempString.length())); 
 }else{ 
  strBuf.append(tempString.substring(fromIndex, rSize)); 
 } 
 } 
 } catch (IOException e) { 
 // TODO Auto-generated catch block 
 e.printStackTrace(); 
 } 
} 
 
 /*寫文件*/
public static void writeFileByLine(FileChannel fcout, ByteBuffer wBuffer, String line){ 
 try { 
 //write on file head 
 //fcout.write(wBuffer.wrap(line.getBytes())); 
 //wirte append file on foot 
 fcout.write(wBuffer.wrap(line.getBytes()), fcout.size()); 
 
 } catch (IOException e) { 
 // TODO Auto-generated catch block 
 e.printStackTrace(); 
 } 
} 
 
 
} 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring源碼解析后置處理器梳理總結(jié)

    Spring源碼解析后置處理器梳理總結(jié)

    這篇文章主要介紹了Spring源碼解析后置處理器梳理總結(jié),在前面幾篇文章中梳理了Spring中bean的創(chuàng)建過程,在這個過程中各式各樣的后置處理器發(fā)揮了不同的作用,可以說后置處理器貫穿了bean的實例化以及初始化過程
    2022-07-07
  • SpringMVC 接收前端傳遞的參數(shù)四種方式小結(jié)

    SpringMVC 接收前端傳遞的參數(shù)四種方式小結(jié)

    這篇文章主要介紹了SpringMVC 接收前端傳遞的參數(shù)四種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java二分法查找_動力節(jié)點Java學(xué)院整理

    Java二分法查找_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Java二分法查找的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 使用Java 實現(xiàn)一個“你畫手機猜”的小游戲

    使用Java 實現(xiàn)一個“你畫手機猜”的小游戲

    這篇文章主要介紹了使用Java 實現(xiàn)一個“你畫手機猜”的小游戲,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 詳解Java的Exception異常機制

    詳解Java的Exception異常機制

    Java的Exception異常機制,為什么會突然聊到異常?其實不是突然,而是我已經(jīng)準(zhǔn)備了很久,但苦于沒有好的例子來講解,從表象到底層實現(xiàn),今天就帶大家詳細了解Exception異常,需要的朋友可以參考下
    2021-05-05
  • 使用TraceId在Spring Cloud中實現(xiàn)線上問題快速定位

    使用TraceId在Spring Cloud中實現(xiàn)線上問題快速定位

    在微服務(wù)架構(gòu)中,服務(wù)間的互相調(diào)用使得問題定位變得復(fù)雜,在此背景下,TraceId為我們提供了一個在復(fù)雜環(huán)境中追蹤請求路徑和定位問題的工具,本文不僅介紹TraceId的基本概念,還將結(jié)合真實場景,為您展示如何在Spring Cloud中應(yīng)用它
    2023-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹的實現(xiàn)方法和原理詳解

    Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹的實現(xiàn)方法和原理詳解

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹的實現(xiàn)方法和原理,紅黑樹是一種特殊的二叉查找樹,每個結(jié)點都要儲存位表示結(jié)點的顏色,或紅或黑,本文將通過示例為大家詳細講講紅黑樹的原理及實現(xiàn),感興趣的朋友可以了解一下
    2024-02-02
  • Java list與set中contains()方法效率案例詳解

    Java list與set中contains()方法效率案例詳解

    這篇文章主要介紹了Java list與set中contains()方法效率案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • MyBatis里映射文件sql語句爆紅問題及解決方案

    MyBatis里映射文件sql語句爆紅問題及解決方案

    文章介紹了在MyBatis映射文件中SQL語句爆紅的問題及其解決方法,解決方法是在設(shè)置中將SQL的全局方言設(shè)為None,然后應(yīng)用并確認設(shè)置即可
    2025-03-03
  • Java?file類中renameTo方法操作實例

    Java?file類中renameTo方法操作實例

    renameTo()方法是File類的一部分,renameTo()函數(shù)用于將文件的抽象路徑名重命名為給定的路徑名??,下面這篇文章主要給大家介紹了關(guān)于Java?file類中renameTo方法操作的相關(guān)資料,需要的朋友可以參考下
    2022-11-11

最新評論

三门峡市| 萨迦县| 仲巴县| 宝应县| 丽江市| 鸡东县| 治县。| 开远市| 巴中市| 自贡市| 锡林浩特市| 余庆县| 县级市| 汉阴县| 南昌县| 怀化市| 凤台县| 左云县| 民丰县| 丹寨县| 永丰县| 平顺县| 息烽县| 武冈市| 汾西县| 曲松县| 建始县| 贵南县| 新泰市| 密山市| 万山特区| 新建县| 沁水县| 开远市| 文安县| 西乌珠穆沁旗| 蒲城县| 家居| 阳江市| 乌拉特后旗| 沁水县|