不管是什么文件都可以用字节来表示,下面的例子是将图片解码成字节,然后再编码成图片。
过程
首先将图片解码,我们需要用文件字节输入流:FIleInputStream
用FIleInputStream
可以将图片储存到字节数组中,我们通过read(byte[])
来读取。然后我们可以通过字节数组输出流将图片的字节储存到程序中。
字节数组输出流:ByteArrayOutputStream
通过write(byte[])
来储存(这边的byte[]是FileInputStream读取到的数组),然后通过toByteArray()
返回一个储存了图片字节的字节数组。
以上是将图片解码成字节并且储存在一个字节数组中。
接下来是将图片字节数组编码成图片,首先我们需要用字节数组输入流ByteArrayInputStream
来读取字节数组,然后用文件字节输出流FileOutputStream
来输出编码得到的文件。
代码
import java.io.*;public class 对接流 {/*** 将图片写入程序* @return*/static public byte[] TestIntputStreamAndByteArrayOuputStream(){final File file = new File("C:\\Users\\郑大人\\Pictures\\DALI\\2.jpeg");InputStream is=null;final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();try{is=new FileInputStream(file);final byte[] bytes = new byte[1024 * 10];while(-1!=is.read(bytes)){byteArrayOutputStream.write(bytes);}return byteArrayOutputStream.toByteArray();}catch (Exception e){e.printStackTrace();}finally {try{if(null!=is){is.close();}}catch (Exception e){e.printStackTrace();}}return null;}/*** 将图片输出到文件* @param*/static public void TestOutputStreamAndByteArrayInputStream(byte[] bytes){final File file = new File("2.jpeg");OutputStream out=null;final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);try{out=new FileOutputStream(file);final byte[] bytes1 = new byte[1024 * 10];while(-1!=byteArrayInputStream.read(bytes1)){out.write(bytes1,0,bytes1.length);}}catch (Exception e){e.printStackTrace();}finally {try{if(null!=out){out.close();}}catch (Exception e){e.printStackTrace();}}}public static void main(String[] args) {final byte[] bytes = TestIntputStreamAndByteArrayOuputStream();System.out.println(bytes.length);TestOutputStreamAndByteArrayInputStream(bytes);}
}