package io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
/**
* 数据类型处理流(基本数据类型)
* 输入流:DataInputStream
* 输出流:DataOutputStream
* @author Lenovo
*
*/
public class Demo1 {
public static void main(String[] args) {
try {
//dataout("G:/filetext/a.txt");
//datainput("G:/filetext/a.txt");
byte[] data=dataout();
System.out.println(data.length);
datainput(data);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*从字节数组里读取数据+类型
* @param str
* @throws IOException
*/
public static void datainput(byte[] src) throws IOException {
DataInputStream inputStream=new DataInputStream(new BufferedInputStream(new ByteArrayInputStream(src)));
//按顺序输出
double num1=inputStream.readDouble();
long num2=inputStream.readLong();
String string=inputStream.readUTF();
inputStream.close();
System.out.println(num1+" "+num2+"\n"+string);
}
/**
* 数据+类型输出到字节数组里
* 输出流:新增方法不可使用多态
* @param str
* @throws IOException
*/
public static byte[] dataout() throws IOException {
byte[] bell=null;
//类型测试
double point=2.5;
long lo=100L;
String string="时间是令人猝不及防的东西";
//选择流
ByteArrayOutputStream os=new ByteArrayOutputStream();
DataOutputStream dataOutputStream=new DataOutputStream(new BufferedOutputStream(os));
dataOutputStream.writeDouble(point);
dataOutputStream.writeLong(lo);
dataOutputStream.writeUTF(string);
dataOutputStream.flush();
dataOutputStream.close();
bell=os.toByteArray();
os.close();
return bell;
}
}