java把一个文件转化为byte字节_java把一个文件转化为byte字节

这篇博客展示了如何在Java中将一个文件转换为byte[]数组,然后将这些字节写入新的文件。作者提供了一个名为`getByte`的方法来实现转换,并讨论了通过字节传输文件的优缺点,建议使用URL获取文件以支持断点续传功能。

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

最近做android的时候,同事说用一个URL获取一张图片太慢了,看能不能发字节过来,我就测试了一下,把一个File的文件转化为一个byte[]数组字节,下面是代码:

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

/**

* 把一个文件转化为byte[]数据,然后把字节写入一个新文件里面

* @author spring sky

*
Email:vipa1888@163.com

*
QQ:840950105

*

*/

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 newFile = 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获取,这样还可以加入断点续传的功能,排除了很多异常的问题! 这样比较好!同时我也希望大家不要考虑用这种方式给客户端传送文件!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值