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

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

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

對(duì)于幾百M(fèi)或上G的大文件可使用java nio進(jìn)行讀寫(xiě) , 根據(jù)個(gè)人的需求 可能需要將一個(gè)超大文件讀寫(xiě)形成很多較小的文件進(jìn)行分析,這也不是什么難事,在讀完一個(gè)緩沖區(qū)后 更換寫(xiě)入的對(duì)象即可,本文就不做詳細(xì)介紹了,有需要的可以聯(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("開(kāi)始讀取并重寫(xiě)文件,請(qǐng)等待...");
 
 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("讀寫(xiě)完成!"); 
} 
 
 /*讀文件同時(shí)寫(xiě)文件*/
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(); 
 } 
} 
 
 /*寫(xiě)文件*/
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(); 
 } 
} 
 
 
} 

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

相關(guān)文章

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

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

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

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

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

    Java二分法查找_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

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

    使用Java 實(shí)現(xiàn)一個(gè)“你畫(huà)手機(jī)猜”的小游戲

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

    詳解Java的Exception異常機(jī)制

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

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

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

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

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

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

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

    MyBatis里映射文件sql語(yǔ)句爆紅問(wèn)題及解決方案

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

    Java?file類(lèi)中renameTo方法操作實(shí)例

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

最新評(píng)論

齐河县| 湛江市| 建始县| 巴里| 和静县| 高安市| 西青区| 雅安市| 房山区| 内江市| 通城县| 长乐市| 饶平县| 黄龙县| 宿州市| 武功县| 常熟市| 惠州市| 石阡县| 霍林郭勒市| 上林县| 乌恰县| 开封市| 双柏县| 蒙阴县| 安远县| 两当县| 浪卡子县| 赤水市| 旬邑县| 繁峙县| 潮州市| 桂平市| 无棣县| 临安市| 凉山| 蒙山县| 阿鲁科尔沁旗| 儋州市| 安康市| 金寨县|