IO_综合_对接流

IO_综合_对接流
IO_综合_对接流
byteArrayInputStream 意思是程序到字节数组
byteArrayOutputSteam意思是字节数组到程序
将图片转换成字节数组,然后在将字节数组还原成图片
1.图片读取到字节数组
1).图片到程序用FileInputStream
2).程序到字节数组ByteArrayOutputStream

byte[] flush = new byte[1024*10];//缓冲容器
int len = -1; //接收长度
while ((len=is.read(flush))!=-1) {//结尾的结果等于-1
	 baos.write(flush,0,len);		//写出到字节数组中	
	 }			
baos.flush();
return baos.toByteArray();

2.将字节数组还原成图片
1).字节数组到程序ByArrayInputStream
2).程序到文件FileOutputStream

int len = -1; //接收长度
while ((len=is.read(flush))!=-1) {
os.write(flush,0,len);//写出到文件				
					}

完整代码

 import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;

/*
 *1.图片读取到字节数组
 * 1)图片到程序 FileInputStream
 * 2)程序到字节数组 ByteArrayOutputStream
 *2.字节数组写到文件
 * 1).字节数组到程序ByArrayInputStream
 * 2).程序到文件FileOutputStream
 */
public class IOtest07 {
	public static void main(String[] args) throws IOException {
		byte[] datas = fileToByteArray("D:/WorkSpace/IO/src/io.jpg");
		System.out.println(datas.length);
		byteArrayToFile(datas, "D:/WorkSpace/IO/src/p-byte.png");
	}
	//1.图片读取到字节数组
	public static byte[] fileToByteArray(String filePath){
		//1.创建源与目的地
				File src = new File(filePath); //图片
				byte[] dest = null;   //字节数组
				
				//2.选择流
				InputStream is =null; 
				ByteArrayOutputStream baos = null;
				try {
					is = new FileInputStream(src);
					baos = new ByteArrayOutputStream();
					//3.操作(分段读取)
					byte[] flush = new byte[1024*10];//缓冲容器
					int len = -1; //接收长度
					while ((len=is.read(flush))!=-1) {//结尾的结果等于-1
					  baos.write(flush,0,len);		//写出到字节数组中
					}					
					baos.flush();
					return baos.toByteArray();
				
				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}finally{
					//4.释放资源 
					try {
						if (null!=is) { //如果 is没有就不存在释放
							is.close();
						}
						
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
				}
				return null;
				
	}
	//2.字节数组写到图片

	 // 1).字节数组到程序ByArrayInputStream
	  //2).程序到文件FileOutputStream
	
	public static void byteArrayToFile(byte[] src, String filePath) throws IOException{
		//1.创建源
				File dest = new File(filePath);
				OutputStream os = null;
				InputStream is = null;
				//2.选择流
				try {
					is = new ByteArrayInputStream(src);
					os = new FileOutputStream(dest);
					//3.操作(分段读取)
					byte[] flush = new byte[1024];//缓冲容器
					int len = -1; //接收长度
					while ((len=is.read(flush))!=-1) {
						os.write(flush,0,len);//写出到文件
						
					}
					
					os.flush();
			
				}finally{
					//4.释放资源 
					try {
						if (null!=os) { //如果 is没有就不存在释放
							os.close();
						}
						
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				
	}
	
}

上一篇:mysql 查看 脏页_MySQL:刷脏页


下一篇:Could not flush and close the file system output stream