- packagezs;
- importjava.io.BufferedInputStream;
- importjava.io.ByteArrayOutputStream;
- importjava.io.File;
- importjava.io.FileInputStream;
- importjava.io.FileNotFoundException;
- importjava.io.IOException;
- importjava.io.RandomAccessFile;
- importjava.nio.ByteBuffer;
- importjava.nio.MappedByteBuffer;
- importjava.nio.channels.FileChannel;
- importjava.nio.channels.FileChannel.MapMode;
- publicclassFileUtils{
- publicbyte[]getContent(StringfilePath)throwsIOException{
- Filefile=newFile(filePath);
- longfileSize=file.length();
- if(fileSize>Integer.MAX_VALUE){
- System.out.println("filetoobig...");
- returnnull;
- }
- FileInputStreamfi=newFileInputStream(file);
- byte[]buffer=newbyte[(int)fileSize];
- intoffset=0;
- intnumRead=0;
- while(offset<buffer.length
- &&(numRead=fi.read(buffer,offset,buffer.length-offset))>=0){
- offset+=numRead;
- }
- //确保所有数据均被读取
- if(offset!=buffer.length){
- thrownewIOException("Couldnotcompletelyreadfile"
- +file.getName());
- }
- fi.close();
- returnbuffer;
- }
- /**
- *thetraditionalioway
- *
- *@paramfilename
- *@return
- *@throwsIOException
- */
- publicstaticbyte[]toByteArray(Stringfilename)throwsIOException{
- Filef=newFile(filename);
- if(!f.exists()){
- thrownewFileNotFoundException(filename);
- }
- ByteArrayOutputStreambos=newByteArrayOutputStream((int)f.length());
- BufferedInputStreamin=null;
- try{
- in=newBufferedInputStream(newFileInputStream(f));
- intbuf_size=1024;
- byte[]buffer=newbyte[buf_size];
- intlen=0;
- while(-1!=(len=in.read(buffer,0,buf_size))){
- bos.write(buffer,0,len);
- }
- returnbos.toByteArray();
- }catch(IOExceptione){
- e.printStackTrace();
- throwe;
- }finally{
- try{
- in.close();
- }catch(IOExceptione){
- e.printStackTrace();
- }
- bos.close();
- }
- }
- /**
- *NIOway
- *
- *@paramfilename
- *@return
- *@throwsIOException
- */
- publicstaticbyte[]toByteArray2(Stringfilename)throwsIOException{
- Filef=newFile(filename);
- if(!f.exists()){
- thrownewFileNotFoundException(filename);
- }
- FileChannelchannel=null;
- FileInputStreamfs=null;
- try{
- fs=newFileInputStream(f);
- channel=fs.getChannel();
- ByteBufferbyteBuffer=ByteBuffer.allocate((int)channel.size());
- while((channel.read(byteBuffer))>0){
- //donothing
- //System.out.println("reading");
- }
- returnbyteBuffer.array();
- }catch(IOExceptione){
- e.printStackTrace();
- throwe;
- }finally{
- try{
- channel.close();
- }catch(IOExceptione){
- e.printStackTrace();
- }
- try{
- fs.close();
- }catch(IOExceptione){
- e.printStackTrace();
- }
- }
- }
- /**
- *MappedFilewayMappedByteBuffer可以在处理大文件时,提升性能
- *
- *@paramfilename
- *@return
- *@throwsIOException
- */
- publicstaticbyte[]toByteArray3(Stringfilename)throwsIOException{
- FileChannelfc=null;
- try{
- fc=newRandomAccessFile(filename,"r").getChannel();
- MappedByteBufferbyteBuffer=fc.map(MapMode.READ_ONLY,0,
- fc.size()).load();
- System.out.println(byteBuffer.isLoaded());
- byte[]result=newbyte[(int)fc.size()];
- if(byteBuffer.remaining()>0){
- //System.out.println("remain");
- byteBuffer.get(result,0,byteBuffer.remaining());
- }
- returnresult;
- }catch(IOExceptione){
- e.printStackTrace();
- throwe;
- }finally{
- try{
- fc.close();
- }catch(IOExceptione){
- e.printStackTrace();
- }
- }
- }
- }
- 浏览: 34285 次
- 来自: 上海
文章分类
最新评论
发表评论
-
有10阶梯, 每次走1,2 or 3 阶,有多少种方式???
2017-06-26 11:39 520/** * 有10阶梯, 每次走1,2 or 3 ... -
Spring jdbc 两方法分析
2017-04-20 20:16 5321. List<User> rsList = ... -
注释驱动的 Spring cache 缓存介绍
2017-04-19 22:10 483https://www.ibm.com/developerwo ... -
Servlet 注解 不生效
2017-04-11 16:24 1716@WebServlet 此注解是Web Servlet 3.0 ... -
Java 并发编程实战.pdf
2017-04-10 22:44 0Java 并发编程实战.pdf -
Java transient关键字使用小记
2017-04-10 22:48 4991. transient的作用及使用方法 我们都 ... -
每次任务 创建 一个 Scheduler,运行完直接shutdown ,同时运行不相互影响.
2014-08-15 17:12 479创建Scheduler 不相互影响 用默认工厂类获取s ... -
java export jar 在Window,liunix 运行
2014-09-18 16:31 374一:Window 方案一:cmd java -jar ... -
Arrays.asList 分析
2014-10-20 17:09 371问题 一: 代码如下: int [] ar ... -
解决Spring定时计划任务重复执行两次(实例被构造两次)问题的方法
2015-05-15 11:44 388http://blog.csdn.net/chaijunku ... -
ExtJS3 简单主页面 构
2015-07-23 21:36 528一. 页面JSP代码如下 <% Strin ... -
Demo POI
2014-09-10 16:33 455import java.io.FileOutputStrea ... -
java 直接 访问WebSphere JNDI
2014-09-16 14:41 495代码如下: Hashtable< ... -
获得执行jar的运行路径
2014-09-16 16:36 538http://blog.csdn.net/whuslei/a ... -
图片 压缩
2014-11-05 14:00 433原文http://cuisuqiang.iteye.com/ ... -
split 陷阱分析
2014-12-25 15:35 345java 字符串split有很多坑,使用时请小心!! ... -
JSON 简单封装
2015-08-25 23:52 392import java.util.ArrayList; ... -
Spring jdbc call oralce procedure or function
2015-09-24 15:02 3981. spring jdbc call oralce pro ... -
深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
2015-10-21 14:48 383深入浅出JMS(四)--Spring和ActiveMQ整合的 ... -
Spring整合Hessian
2015-10-29 17:27 343转载自Spring整合Hessian 前言: 近日着手 ...
相关推荐
本文将介绍三种读取Java文件到byte数组的方法,供开发者参考。 ### 方法一:传统IO方式 这种方法是最常见的读取文件的方式,使用`FileInputStream`、`BufferedInputStream`和`ByteArrayOutputStream`组合实现。 `...
在Java编程语言中,有时我们需要将两个或多个字节数组(`byte`数组)合并成一个新的单一数组。这种情况在处理二进制数据、文件读写或者与硬件交互时尤其常见。本文将深入探讨如何在Java中实现两个`byte`数组的合并,...
本文将深入探讨如何在Java中将byte数组与其他基本类型(如short、int、long)进行转换,这些转换在处理二进制数据、网络通信或序列化等方面至关重要。 首先,我们来看byte数组与short之间的转换。在Java中,byte...
### Java将图片转换为byte数组及反向转换的知识点总结 #### 一、知识点概述 在Java编程中,经常需要处理图像数据,特别是在网络传输或存储时,将图像转换为`byte`数组是一种常见的做法。这不仅可以提高传输效率,...
本工具“float转byte数组测试小工具”专注于将浮点数(float)转换为字节数组,这是一种在计算机内存中表示和传输数值的常用方式。在Java、C++、C#等编程语言中,这种转换尤其重要,因为它们使用不同的数据结构来...
### 手机移动开发将byte数组写入文件的JAVA代码详解 #### 一、知识点概述 在移动开发领域,特别是Android或J2ME等平台上,经常需要处理数据的读写操作,比如将从网络获取的数据保存到本地文件系统中。本篇文章主要...
在文件读取和网络通信中,我们可能会遇到分块的数据,比如在处理大文件时,可能会先读取一部分数据到`byte`数组,然后再读取另一部分,最后需要将这些部分合并。`read_struct`这样的命名可能暗示我们在处理结构化的...
标题“字节数组流byte文件”中涉及的概念是字节数组流(byte array stream),这是一种在计算机程序中处理二进制数据的方式。字节数组流通常用于在内存中传输和接收字节数据,尤其在处理文件、图片、PDF、Excel或...
### Java基本类型与Byte数组互相转换 在Java编程语言中,基本类型的变量(如`short`、`int`、`long`、`char`、`double`和`float`)和`byte`数组之间的相互转换是一项非常实用的技术,尤其是在网络通信、文件读写等...
Java 是一种 popular 的编程语言,它提供了多种方式来将对象转换为 byte 数组和将 byte 数组转换回对象。这种转换对于数据存储、网络传输和序列化非常重要。本文将介绍 Java 中将对象转换为 byte 数组的方法和将 ...
在Java编程中,将字节数组转换为16进制字符串是一项常见的任务,尤其是...了解这些概念对于处理二进制数据至关重要,特别是在网络编程、文件读写和数据序列化等场景中。希望以上内容能帮助你更好地理解和应用这些知识。
在Java编程中,将`int`类型转换为`byte`数组以及从`byte`数组还原回`int`类型是常见的操作,特别是在网络编程中。这是因为网络传输的数据通常以字节流的形式存在,而`int`等基本数据类型需要进行适当的序列化才能...
在实际项目中,这种从字节数组中提取子数组的操作非常常见,特别是在处理网络协议、文件读写、序列化或反序列化数据时。每个类都可能根据其职责和上下文,以不同的方式利用这些基本的数组操作。不过,由于没有具体的...
在Java中,有几种不同的方式来初始化和表示byte数组,如下所述: 1. **二进制表示**: 我们可以用二进制数来初始化byte数组。例如,`byte[] aa = {00010110, 01010010, 10111000};` 这里每个数字都是一个8位的二...
"Java byte数组操纵方式代码实例解析" 本文主要介绍了Java byte数组操纵方式代码实例解析,通过示例代码详细介绍了Java byte数组的操纵方式,涵盖了字节数组的基本概念、字节数组的操作方法、ByteArrayInputStream...
1. **读取字节数组**:首先,你需要获取到图片的byte数组。这可能来自于网络请求、文件读取或者本地存储。 ```java byte[] imageData = ... // 获取到的字节数组 ``` 2. **设置BitmapFactory.Options**:为了高效...
在Java编程中,处理图像数据时,有时需要将图片转换为byte数组,或者将byte数组恢复为图片。这在文件传输、数据库存储或网络通信等场景中非常常见。本文将详细讲解如何在Java中实现图片与byte数组之间的转换。 首先...
介绍php字符串与byte字节数组转化类,转换一个String字符串为byte数组,将字节数组转化为String类型的数据,转换一个int为byte数组,从字节数组中指定的位置读取一个Integer类型的数据,转换一个shor字符串为byte...
通过上述介绍,我们可以了解到Java中对象与byte数组之间的相互转换是实现对象序列化的一种常见方式。掌握了这一技能后,可以在多种应用场景中灵活运用,比如在网络传输数据、保存对象状态等方面。同时,也需要注意...
`byte`数组是Java中存储二进制数据的基本方式,非常适合处理文件,因为文件本质上都是由二进制数据构成的。 首先,我们来看第一个获取文件内容的方法,通过`FileInputStream`类实现。这段代码首先创建了一个`File`...