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学习笔记打印流

Java IO流--打印流

Java.io.outputstream.PrintStream:打印流

JavaSE基础九---<IO流 >print打印流,对象输入输出流,对象序列化,transient关键字

IO流---打印流

Java-IO处理流