国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 13:57:20
字體:
供稿:網(wǎng)友

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

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();			}		}	}}

以上這篇讀取Java文件到byte數(shù)組的三種方法(總結(jié))就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 夏河县| 南开区| 阳春市| 永寿县| 池州市| 高台县| 延长县| 金山区| 南充市| 灌南县| 诸城市| 绥中县| 衡东县| 德江县| 宁远县| 黄石市| 来凤县| 固镇县| 区。| 灵台县| 临朐县| 宜川县| 泰州市| 宣汉县| 准格尔旗| 平远县| 清新县| 江安县| 漠河县| 平陆县| 洛浦县| 云安县| 涿鹿县| 北辰区| 彝良县| 佛冈县| 巫山县| 鄂伦春自治旗| 高淳县| 峡江县| 阿图什市|