数据字节流、标准输出流
本文介绍数据字节流DataInputStream、DataOutputStream和标准字节输出流PrintStream
1.数据字节流
数据字节流可以存储数据包括其数据类型,数据字节流的文件无法用记事本打开。
DataOutputStream写数据:
package com.dh.io;
import java.io.DataOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class DataOutputStream01 {
public static void main(String[] args) {
DataOutputStream dos = null;
try {
//数据流需要借助一个字节输出流来实例化对象
FileOutputStream fos = new FileOutputStream("data");
dos = new DataOutputStream(fos);
byte b = 1;
short s = 2;
int i = 3;
long l = 4L;
float f = 5.5F;
double d = 6.6;
char c = '1';
boolean bool = false;
//数据和数据类型一同写入文件
dos.writeByte(b);
dos.writeShort(s);
dos.writeInt(i);
dos.writeLong(l);
dos.writeFloat(f);
dos.writeDouble(d);
dos.writeChar(c);
dos.writeBoolean(bool);
dos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(dos != null){
try {
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
DataInputStream读数据:
package com.dh.io;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class DataInputStream01 {
public static void main(String[] args) {
DataInputStream dis = null;
try {
FileInputStream fis = new FileInputStream("data");
dis = new DataInputStream(fis);
//必须要按照文件的顺序读
System.out.println(dis.readByte());
System.out.println(dis.readShort());
System.out.println(dis.readInt());
System.out.println(dis.readLong());
System.out.println(dis.readFloat());
System.out.println(dis.readDouble());
System.out.println(dis.readChar());
System.out.println(dis.readBoolean());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(dis != null){
try {
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
结果:
1
2
3
4
5.5
6.6
1
false
可以看到数据流是比较麻烦的,所以使用的也较少。
2.标准输出流
主要是掌握改变输出流的输出方向,可以当日志工具。
package com.dh.io;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class PrintStream01 {
public static void main(String[] args) {
//通过System系统类获得输出流对象
PrintStream ps = System.out;
//输出到控制台
ps.println("hello");
ps.println("world");
ps.println("hello");
ps.println("kitty");
//标准输出流不需要关闭
try {
PrintStream stream = new PrintStream(new FileOutputStream("log.txt",true));
//改变输出路径,以追加方式输出到Project根目录下的log.txt文本文件中
System.setOut(stream);
System.out.println("hello");
System.out.println("world");
System.out.println("hello");
System.out.println("kitty");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}