package _03;
import java.io.*;
import java.nio.charset.StandardCharsets;
public class _3_21ByteArrayInputStream {
public static void main(String[] args) {
// FileInputStream是请求操作系统进行的
// 而ByteArray是虚拟机中的一块内存,GC管理,所以可以不需要关闭流
// 所有对象,包括数字都可以转成字节数组二进制,方便我们进行网络传送
// 字节数组不要过大
// byte[] datas = " eveything will be ok".getBytes(StandardCharsets.UTF_8);
// InputStream is = null;
// try {
// is = new ByteArrayInputStream(datas);
// byte[] flush = new byte[5];
// int len=-1;
// while((len=is.read(flush))!=-1){
// String str = new String(flush,0,flush.length);
// System.out.println(str);
// }
// }catch (IOException e){
// e.printStackTrace();
// }//没有close方法
// 保存的位置,模拟网络节点或者服务器中的某个节点的存储
// byte[] dest = null;
// ByteArrayOutputStream baos = null;
//
// baos = new ByteArrayOutputStream();
// String msg = "nanjing rain";
// byte[] data1 = msg.getBytes(StandardCharsets.UTF_8);
//
// baos.write(data1,0,data1.length);
//
// //获取数据
// dest = baos.toByteArray();
// System.out.println(new String(dest));
// try {
// baos.flush();
// } catch (IOException e) {
// e.printStackTrace();
// }
byte[] datas = fileToByteArray("src\\01.jpg");
System.out.println(datas.length);
}
// 1.图片读取到字节数组
public static byte[] fileToByteArray(String filename){
File file = new File(filename);
byte[] dest = null;
InputStream ism = null;
ByteArrayOutputStream baos = null;
try {
ism = new FileInputStream(file);
baos = new ByteArrayOutputStream();
// read的返回值int是字符的值
// int temp;
// while((temp = ism.read())!=-1){
// System.out.println((char)(temp));
// }
byte[] flush = new byte[1024*10]; //容器大小
int length = -1;//接收长度
while((length=ism.read(flush))!=-1){
baos.write(flush,0,length);
}
baos.flush();
dest = baos.toByteArray();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(ism!=null){
ism.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return dest;
}
// 2.字节数组到图片
public static void byteArrayToFile(byte[] datas,String filename){
File file = new File(filename);
InputStream is = null;
OutputStream osm = null;
try{
is = new ByteArrayInputStream(datas);
osm = new FileOutputStream(file);
byte[] flush = new byte[1024];
int len=-1;
while((len=is.read(flush))!=-1){
osm.write(flush,0,len);
}
osm.flush();
}catch (IOException e){
e.printStackTrace();
}finally {
try {
if(osm!=null){
osm.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
08-22
4293