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.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
- 字符数组:
- 二.处理流:处理基本数据类型+字符串(String);保留数据+类型
-
1.输入流: DataInputSteeam ;主要:readXxx
-
2.输出流:DataOutputStream ;主要:WriteXxx
*注意:
-
1.新增方法不能使用多态
-
2.java.io.EOFException 这个异常要认识:表示已达到文件的末尾即没有读取到文件相关的内容
-
3.当读取顺序不一致 可能存在数据问题
*/
public class DataDemo02 {
public static void main(String[] args) throws IOException {
//写入测试
byte[] data = write();
System.out.println(data.length+":有数值表示写入成功");
read(data);
}
/**
* 数据+类型输出到字节数组中
* @throws IOException
*/
public static byte[] write() throws IOException{
//构建目标数组
byte[] dest = null;
double point = 2.5;
long num = 100L;
String str = "数据类型";
//选择流
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(//DataOutputStream数据输出流;
new BufferedOutputStream(//放入OutputStream的子类;BufferedOutputStream缓冲输出流
bos));
//操作 :依次写出;注意写出顺序;读取顺序必须与写出顺序一致
dos.writeDouble(point);//write写;处理异常
dos.writeLong(num);
dos.writeUTF(str);//UTF转换格式(UCS Transformation Format)
dos.flush();
dest = bos.toByteArray();//toByteArray到字节数组
//关闭
dos.close();
return dest;
}
/**
* 从字节数组读取数据+类型;
* @throws IOException
*/
public static void read(byte[] src) throws IOException{//加入文件路径
//选择流:数据类型的输入流
ByteArrayInputStream bis = new ByteArrayInputStream(src);
DataInputStream dis = new DataInputStream(
new BufferedInputStream(bis)) ;
//操作;注意:读取的顺序必须与写出的一致且必须存在,才能读取
double num1 = dis.readDouble();
long num2 = dis.readLong();
String num3 = dis.readUTF();
dis.close();
System.out.println(num1 );
System.out.println(num2);
System.out.println(num3);
}
}
//结果--------------------------------------------------
30:有数值表示写入成功
2.5
100
数据类型