Java把一个文件转化为byte字节

本文介绍了一种使用Java将文件转换为Byte数组的方法,并演示了如何将这些字节写入新文件。此外,作者还讨论了这种方法在实际应用中的局限性及替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java把一个文件转化为byte字节

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

/**
* 把一个文件转化为byte[]数据,然后把字节写入一个新文件里面  
*/
public class FileToByte {
 	public static void main(String[] args) throws Exception {
  		File file = new File("d:/a.png");
  		byte[] b = getByte(file);
  		/***
 		* 打印出字节
  		* 每一行10个字节
  		*/
  		for (int i = 0; i < b.length; i++) {
  			System.out.print(b[i]);
  			if(i%10==0&&i!=0){
  				System.out.print("\n");
  			}
  		}
  		/**
  		* 把得到的字节写到一个新的文件里面
 		*/
  		File newnewFile = new File("e:/我的新图片.png");
  		OutputStream os = new FileOutputStream(newFile);
  		os.write(b); //把流一次性写入一个文件里面
  		os.flush();
  		os.close();
  	}

  /**
  * 把一个文件转化为字节
  * @param file
  * @return byte[]
  * @throws Exception
  */
  public static byte[] getByte(File file) throws Exception{
  		byte[] bytes = null;
  		if(file!=null){
  			InputStream is = new FileInputStream(file);
  			int length = (int) file.length();
  			if(length>Integer.MAX_VALUE){ //当文件的长度超过了int的最大值
  				System.out.println("this file is max ");
  				return null;
  			}
  			bytes = new byte[length];
  			int offset = 0;
  			int numRead = 0;
  			while(offset=0){
  				offset+=numRead;
  			}
  			//如果得到的字节长度和file实际的长度不一致就可能出错了
  			if(offset){
  				System.out.println("file length is error");
  				return null;
  			}
  			is.close();
  		}
  		return bytes;
	}
}

总结:

  上面的getByte方法就可以得到了字节,同时我把字节转化为文件也是没有问题的! 这种方式主要是用把文件包装在xml或者json中传送,不过,我个人觉得服务器端还是一样给发送流,但是这种方式存在弊端,比如文件过大,那么字节肯定会多了,这样如果客户端突然因为某些原因而连接不上了服务器,将会导致文件传送的失败!我不推荐这种方式,个人觉得还是使用url获取,这样还可以加入断点续传的功能,排除了很多异常的问题! 这样比较好!同时我也希望大家不要考虑用这种方式给客户端传送文件!

我多是将上述方法用于处理Oracle中Blob的操作中!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值