java中如何把一个文件转化为byte数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何把一个文件转化为byte数组相关的知识,希望对你有一定的参考价值。

File file = new File("E:/girl.png");
我该如何把这个得到这个file的byte数组

java将文件转换为byte数组,主要是使用输出流,实例如下:

/** 
     * 根据byte数组,生成文件 
     */  
    public static void getFile(byte[] bfile, String filePath,String fileName)   
        BufferedOutputStream bos = null;  //新建一个输出流
        FileOutputStream fos = null;  //w文件包装输出流
        File file = null;  
        try   
            File dir = new File(filePath);  
            if(!dir.exists()&&dir.isDirectory())//判断文件目录是否存在  
                dir.mkdirs();  
              
            file = new File(filePath+"\\\\"+fileName);  //新建一个file类
            fos = new FileOutputStream(file);  
            bos = new BufferedOutputStream(fos);  //输出的byte文件
            bos.write(bfile);  
         catch (Exception e)   
            e.printStackTrace();  
         finally   
            if (bos != null)   
                try   
                    bos.close();  //关闭资源
                 catch (IOException e1)   
                    e1.printStackTrace();  
                  
              
            if (fos != null)   
                try   
                    fos.close();  //关闭资源
                 catch (IOException e1)   
                    e1.printStackTrace();  
                  
              
          
    
参考技术A import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

public class Test

public static void main(String[] args)

// TODO Auto-generated method stub

try

getBytesFromFile(new File("C:\\aaa.txt"));

catch(IOException e)

System.out.println("IOException");





// 返回一个byte数组

public static byte[] getBytesFromFile(File file) throws IOException

InputStream is = new FileInputStream(file);

// 获取文件大小

long length = file.length();

if (length > Integer.MAX_VALUE)

// 文件太大,无法读取

throw new IOException("File is to large "+file.getName());



// 创建一个数据来保存文件数据

byte[] bytes = new byte[(int)length];

// 读取数据到byte数组中

int offset = 0;

int numRead = 0;

while (offset < bytes.length

&& (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0)

offset += numRead;



// 确保所有数据均被读取

if (offset < bytes.length)

throw new IOException("Could not completely read file "+file.getName());



// Close the input stream and return bytes

is.close();

return bytes;



本回答被提问者和网友采纳
参考技术B /**
* 获得指定文件的byte数组
*/
public byte[] getBytes(String filePath)
byte[] buffer = null;
try
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1)
bos.write(b, 0, n);


fis.close();
bos.close();
buffer = bos.toByteArray();
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();

return buffer;
参考技术C 答非所问 真服气这种人

如何把一个byte数组转化为字符串

工具/原料

C#   IDEA软件   java开发环境   电脑

方法/步骤

1、依次点击“文件--》新建--》项目”。

2、选择为:控制台应用程序。

3、确定后系统生成的代码。

4、测试2代码:把一个byte数组转换为一个字符串。

5、测试2结果byte数组成字符串成功。

参考技术A Java中byte数组转换成string字符串可以直接使用string类的构造函数。而string转byte数组,则可以使用string类型的getBytes()方法进行转换, 参考技术B Java中byte数组转换成string字符串可以直接使用string类的构造函数。而string转byte数组,则可以使用string类型的getBytes()方法进行转换,如下形式:
1、string 转 byte[]
String str = "Hello";//声明一个字符串
byte[] srtbyte = str.getBytes();//使用string类的getBytes方法进行转换
2、byte[] 转 string
byte[] srtbyte;//声明一个byte字节数组
String res = new String(srtbyte);//使用构造函数转换成字符串
System.out.println(res);
也可以将byte转换的时候,设定编码方式相互转换,如下代码:

String str = "hello";
byte[] srtbyte = null;
try
srtbyte = str.getBytes("UTF-8");//设定转换的编码格式
String res = new String(srtbyte,"UTF-8");
System.out.println(res);
catch (UnsupportedEncodingException e) //有可能会出现不能支持的编码格式,捕捉异常。
e.printStackTrace();
本回答被提问者采纳

以上是关于java中如何把一个文件转化为byte数组的主要内容,如果未能解决你的问题,请参考以下文章

在java中如何将全为数字的字符串转化为byte数组?

string怎么转化为byte

如何把多个byte的数组链接在一起

c#怎么把byte数组转换成图像

c语言 二进制的byte数组转化为int数组

c# vs2003 我有个byte[]数组,如何存入文件?