Java IO流--打印流(Print) & 对象流(Object) & IO流总结
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java IO流--打印流(Print) & 对象流(Object) & IO流总结相关的知识,希望对你有一定的参考价值。
1. 打印流(Print)
- PrintWriter 和 PrintStream 都属于输出流,分别针对与字符和字节
- PrintWriter 和 PrintStream 提供了重载的print
- Println方法用于多种数据类型的输出
- PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息
- PrintWriter 和 PrintStream有自动flush功能
- 打印流的构造方法
【测试代码】:
log.txt 【程序运行前】
TestTransform2.java
/*重新设置打印输出的窗口,
把默认在命令行窗口输出打印内容设置成其他指定的打印显示窗口 */
public class TestTransform2 {
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("E:\\\\IDEACode\\\\ketangpai\\\\file-test\\\\src\\\\character1\\\\recource\\\\log.txt");
//在输出流的外面套接一层打印流,用来控制打印 输出
PrintStream ps = new PrintStream(fos);
/*
这里调用setOut()方法改变了输出窗口, 以前写 System.out.print()默认的输出窗口就是命令行窗口.
但现在使用System.setOut(ps)将打印输出窗口改成了由ps指定的文件里 面,通过这样设置以后,打印输出时都会在指定的文件内打印输出
在这里将打印输出窗口设置到了log.txt这个文件里面,所以打印出来的内容会 在log.txt这个文件里面看到
*/
System.setOut(ps);
for (char c = 0; c <= 1000; c++) {
System.out.print(c);//把世界各国的文字打印到log.txt这个文件 中去 }
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
log.txt 【程序运行后】
分析:
2. 对象流(Object)
直接将Object 写入或读出
【示例】:
TestObjectIo.txt【程序运行前】
TestObjectIo.java
package character1;
import java.io.*;
public class TestObjectIo {
public static void main(String[] args) {
TestObject testObject = new TestObject();
testObject.k = 8;// 把k的值修改为8
try {
FileOutputStream fos = new FileOutputStream("E:\\\\IDEACode\\\\ketangpai\\\\file-test\\\\src\\\\character1\\\\recource\\\\TestObjectIo.txt");
// ObjectOutputStream流专门用来处理Object的,在fos流的外面套接 ObjectOutputStream流就可以直接把一个Object写进去
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(testObject);// 直接把一个t对象写入到指定的文件里面
oos.flush();
oos.close();
FileInputStream fis = new FileInputStream("E:\\\\IDEACode\\\\ketangpai\\\\file-test\\\\src\\\\character1\\\\recource\\\\TestObjectIo.txt");
ObjectInputStream ois = new ObjectInputStream(fis); // ObjectInputStream专门用来读一个Object的
// 直接把文件里面的内容全部读取出来然后分解成一个Object对象,并使用强制转换成为TestObject类型
TestObject tRead = (TestObject) ois.readObject();
System.out.print(tRead.i + "\\t" + tRead.j + "\\t" + tRead.d + "\\t" + tRead.k);
ois.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 凡是要将一个类的对象序列化成一个字节流就必须实现Serializable接口
* Serializable接口中没有定义方法,Serializable接口是一个标记性接口,用来给类作标记, 只是起到一个标记作用。
* 这个标记是给编译器看的,编译器看到这个标记之后就可以知道这个类可以被序列化
* 如果想把某个类的对象序列化,就必须得实现Serializable接口
*/
class TestObject implements Serializable {
// Serializable的意思是可以被序列化的
int i = 10;
int j = 9;
double d = 2.3;
int k = 15;
// transient int k = 15;
// 在声明变量时如果加上transient关键字,那么这个变量就会被当作是透明的,即不存在。
}
TestObjectIo.txt【程序运行后】
3. IO流总结
以上是关于Java IO流--打印流(Print) & 对象流(Object) & IO流总结的主要内容,如果未能解决你的问题,请参考以下文章
Java.io.outputstream.PrintStream:打印流