大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 java文件讀取到byte數(shù)組的三種方法(總結(jié))

java文件讀取到byte數(shù)組的三種方法(總結(jié))

更新時間:2019-08-28 14:00:49 來源:動力節(jié)點 瀏覽3802次

  


下面動力節(jié)點java學(xué)院小編就為大家?guī)硪黄猨ava文件讀取到byte數(shù)組的三種方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,希望能夠通過此文幫助到大家。那一起跟隨小編過來看看吧。


java文件讀取到byte數(shù)組的三種方法


package zs;

 

import java.io.BufferedInputStream;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.RandomAccessFile;

import java.nio.ByteBuffer;

import java.nio.MappedByteBuffer;

import java.nio.channels.FileChannel;

import java.nio.channels.FileChannel.MapMode;

 

public class FileUtils {

    public byte[] getContent(String filePath) throws IOException {

        File file = new File(filePath);

        long fileSize = file.length();

        if (fileSize > Integer.MAX_VALUE) {

            System.out.println("file too big...");

            return null;

        }

        FileInputStream fi = new FileInputStream(file);

        byte[] buffer = new byte[(int) fileSize];

        int offset = 0;

        int numRead = 0;

        while (offset < buffer.length

        && (numRead = fi.read(buffer, offset, buffer.length - offset)) >= 0) {

            offset += numRead;

        }

        // 確保所有數(shù)據(jù)均被讀取

        if (offset != buffer.length) {

        throw new IOException("Could not completely read file "

                    + file.getName());

        }

        fi.close();

        return buffer;

    }

 

    /**

     * the traditional io way

     * 

     * @param filename

     * @return

     * @throws IOException

     */

    public static byte[] toByteArray(String filename) throws IOException {

 

        File f = new File(filename);

        if (!f.exists()) {

            throw new FileNotFoundException(filename);

        }

 

        ByteArrayOutputStream bos = new ByteArrayOutputStream((int) f.length());

        BufferedInputStream in = null;

        try {

            in = new BufferedInputStream(new FileInputStream(f));

            int buf_size = 1024;

            byte[] buffer = new byte[buf_size];

            int len = 0;

            while (-1 != (len = in.read(buffer, 0, buf_size))) {

                bos.write(buffer, 0, len);

            }

            return bos.toByteArray();

        } catch (IOException e) {

            e.printStackTrace();

            throw e;

        } finally {

            try {

                in.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

            bos.close();

        }

    }

 

    /**

     * NIO way

     * 

     * @param filename

     * @return

     * @throws IOException

     */

    public static byte[] toByteArray2(String filename) throws IOException {

 

        File f = new File(filename);

        if (!f.exists()) {

            throw new FileNotFoundException(filename);

        }

 

        FileChannel channel = null;

        FileInputStream fs = null;

        try {

            fs = new FileInputStream(f);

            channel = fs.getChannel();

            ByteBuffer byteBuffer = ByteBuffer.allocate((int) channel.size());

            while ((channel.read(byteBuffer)) > 0) {

                // do nothing

                // System.out.println("reading");

            }

            return byteBuffer.array();

        } catch (IOException e) {

            e.printStackTrace();

            throw e;

        } finally {

            try {

                channel.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

            try {

                fs.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

 

    /**

     * Mapped File way MappedByteBuffer 可以在處理大文件時,提升性能

     * 

     * @param filename

     * @return

     * @throws IOException

     */

    public static byte[] toByteArray3(String filename) throws IOException {

 

        FileChannel fc = null;

        try {

            fc = new RandomAccessFile(filename, "r").getChannel();

            MappedByteBuffer byteBuffer = fc.map(MapMode.READ_ONLY, 0,

                    fc.size()).load();

            System.out.println(byteBuffer.isLoaded());

            byte[] result = new byte[(int) fc.size()];

            if (byteBuffer.remaining() > 0) {

                // System.out.println("remain");

                byteBuffer.get(result, 0, byteBuffer.remaining());

            }

            return result;

        } catch (IOException e) {

            e.printStackTrace();

            throw e;

        } finally {

            try {

                fc.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

}


以上就是動力節(jié)點java學(xué)院小編介紹的“java文件讀取到byte數(shù)組的三種方法”的內(nèi)容,希望能夠幫助到大家,如有任何疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。



提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 射久久久 | 亚洲a成人7777777久久 | 国产亚洲欧美在线观看的 | 亚洲伊人精品综合在合线 | 麻豆成人在线 | 久久精品综合国产二区 | 免费看欧美一级a毛片 | 亚洲国产精品综合久久20 | 亚洲欧美日韩国产精品第不页 | 狠狠久久 | 久久亚洲精品成人 | 日日夜夜操美女 | 亚洲国产精品成人久久 | 国产在视频线在精品 | 手机看片神马午夜片 | 欧美三级一区二区三区 | 欧美国产大片 | 久久国产毛片 | 欧美日韩一区二区在线观看视频 | 四虎影视免费 | 亚洲欧美高清视频 | 99热首页| 欧美精品www | 日日摸夜夜添夜夜添影院视频 | 久久久久久夜精品精品免费 | 九九热在线视频观看 | 日本高清毛片视频在线看 | 成人久久精品一区二区三区 | 狠狠舔| 手机看片福利永久国产日韩 | 91青娱乐在线 | 国产日韩成人 | 国产精品成人一区二区三区 | 奇米888888| 97se综合| 米奇久久| 亚洲一区精品视频在线 | 米奇7777 | 亚洲精品亚洲人成在线 | 国产在线精品一区二区高清不卡 | 欧美成人精品第一区二区三区 |