1. 打印流(Print)

  • PrintWriter 和 PrintStream 都属于输出流,分别针对与字符和字节
  • PrintWriter 和 PrintStream 提供了重载的print
  • Println方法用于多种数据类型的输出
  • PrintWriter和PrintStream的输出操作不会抛出异常,用户通过检测错误状态获取错误信息
  • PrintWriter 和 PrintStream有自动flush功能
  • 打印流的构造方法
【测试代码】:

JAVA中JFrame输出文字 java窗口输出文字_打印流

log.txt 【程序运行前】

JAVA中JFrame输出文字 java窗口输出文字_打印流_02

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();
        }
    }
}

JAVA中JFrame输出文字 java窗口输出文字_JAVA中JFrame输出文字_03

log.txt 【程序运行后】

JAVA中JFrame输出文字 java窗口输出文字_对象流_04

分析:

JAVA中JFrame输出文字 java窗口输出文字_JAVA中JFrame输出文字_05


2. 对象流(Object)

直接将Object 写入或读出

JAVA中JFrame输出文字 java窗口输出文字_打印流_06

【示例】:

JAVA中JFrame输出文字 java窗口输出文字_java_07

TestObjectIo.txt【程序运行前】

JAVA中JFrame输出文字 java窗口输出文字_打印流_08

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关键字,那么这个变量就会被当作是透明的,即不存在。
}

JAVA中JFrame输出文字 java窗口输出文字_IO流_09

TestObjectIo.txt【程序运行后】

JAVA中JFrame输出文字 java窗口输出文字_java_10


3. IO流总结

JAVA中JFrame输出文字 java窗口输出文字_对象流_11