Java IO 处理之四:打印流 和 数据流用法
1. Java IO 处理流之打印流
-
在整个IO包中,打印流是输出信息最方便的类。
-
PrintStream(字节打印流)和PrintWriter(字符打印流)
① 提供了一系列重载的print和println方法,用于多种数据类型的输出
② PrintStream和PrintWriter的输出不会抛出异常
③ PrintStream和PrintWriter有自动flush功能
④ System.out返回的是PrintStream的实例 -
Demo
//打印流:字节流:PrintStream 字符流:PrintWriter
@Test
public void printStreamWriter() {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(new File("print.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}//创建打印输出流,设置为自动刷新模式(写入换行符或字节 '\n' 时都会刷新输出缓冲区)
PrintStream ps = new PrintStream(fos,true);
if (ps != null) { // 把标准输出流(控制台输出)改成文件
System.setOut(ps);}
for (int i = 0; i <= 255; i++) { //输出ASCII字符
System.out.print((char)i);
if (i % 50 == 0) { //每50个数据一行
System.out.println(); // 换行
} }
ps.close();
}
2. Java IO 处理流之数据流
- 为了方便地操作Java语言的基本数据类型的数据,可以使用数据流。
- 数据流有两个类:(用于读取和写出基本数据类型的数据)
① DataInputStream 和 DataOutputStream
② 分别“套接”在 InputStream 和 OutputStream 节点流上 - DataInputStream中的方法
boolean readBoolean()
byte readByte()
char readChar()
float readFloat()
double readDouble()
short readShort()
long readLong()
int readInt()
String readUTF()
void readFully(byte[] b)
-
DataOutputStream中的方法
将上述的方法的read改为相应的write即可。 -
数据流实现把数据写到文件
-
注意:要先写入到文件再读取。
//数据流:用来处理基本数据类型、String、字节数组的数据: DataInputStream DataOutputStream
@Test
public void testData() {
DataOutputStream dos = null;
try {
FileOutputStream fos = new FileOutputStream("data.txt");
dos = new DataOutputStream(fos);
dos.writeUTF("我爱你,你却不知道!");
dos.writeBoolean(true);
dos.writeLong(1345674561);
} catch (IOException e) {
e.printStackTrace();
}finally {
if(dos != null) {
try {
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
- 数据流实现从文件读取数据到程序
@Test
public void testData1() {
DataInputStream dis = null;
try {
dis = new DataInputStream(new FileInputStream(new File("data.txt")));
// byte [] b = new byte[20];这样读是错的,会出现乱码
// int len;
// while((len = dis.read(b)) != -1) {
// System.out.println(new String(b,0,len));
// }
String str = dis.readUTF();
System.out.println(str);
boolean b = dis.readBoolean();
System.out.println(b);
long l = dis.readLong();
System.out.println(l);
} catch (Exception e) {
e.printStackTrace();
}finally {
if(dis != null) {
try {
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}