[IO]——处理流.字节数组

时间:2022-09-03 08:25:55
/**
* 数据类型处理流(基本+string)处理流
* 1、输入流DataInputStream readerXxx
* 2、输出流DataOutPutStream writeXxx
* 新增方法不能使用多态
* java.io.EOFException:没有读取到相关的内容
* @author Administrator
*
*/
public class demo4 {
public static void main(String[] args) throws IOException {
byte[] data=write();
read(data);
System.out.println(data.length);
}
/**
* 从文件中读取数据+类型输出到字节数组中
* @throws IOException
*/
public static void read(byte[] src) throws IOException{
//选择流
DataInputStream dis=new DataInputStream(
new BufferedInputStream(
new ByteArrayInputStream(src)
)
);
//操作 读取顺序与写出一致,必须存在才能读取
//不一致,数据存在问题
double num1=dis.readDouble();
long num2=dis.readLong();
String str=dis.readUTF();
dis.close();
System.out.println(str);
}
/**
* 数据+类型输出到字节数组中
* @throws IOException
*/
public static byte[] write() throws IOException{
//目标数组
byte[] dest=null;
double point=2.5;
long num=100L;
String str="你好,中国";
//选择流 ByteArrayOutputStream DataOutputStream
ByteArrayOutputStream bos=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(
new BufferedOutputStream(
bos
));
//写出操作 ,写出顺序
dos.writeDouble(point);
dos.writeLong(num);
dos.writeUTF(str);
dos.flush();
dest=bos.toByteArray();
dos.close();
return dest;
}
}