22.2 打印流(了解)

在整个IO包中,打印流(内部是BufferedWriter封装)是输出信息最方便的类,主要包括字节打印流(PrintStream)和字符打印流(PrintWriter)。打印流提供了非常方便的打印功能,可以打印任何的数据类型。如:小数、整数、字符串等。

PrintStream和PrintWriter都属于输出流,分别针对输出字节和字符。

PrintStream和PrintWriter提供了重载的print()、println()方法用于多种数据类型的输出。

PrintStream和PrintWriter不会抛出异常,用户通过检测错误状态获取错误信息。

PrintStream和PrintWriter有自动flush 功能。

22.2.1 打印流构造方法

  1. PrintStream 字节打印流

    1. PrintStream(OutputStream out);获得指定输出流的字节打印流对象。

    2. PrintStream(OutputStream out, boolean auotflush);获得指定输出流的字节打印流对象。autoflush 是否自动刷新。

    3. PrintStream(OutputStream out, boolean auotflush, String encoding);获得指定输出流的字节打印流对象。autoflush 是否自动刷新。encoding 指定字符编码。

    4. 等...

  2. PrintWriter 字符打印流

    1. PrintWriter(OutputStream out);获得指定输出流的字符打印流对象。

    2. PrintWriter(OutputStream out, boolean autoflush);获得指定输出流的字符打印流对象。autoflush 是否自动刷新。

    3. PrintWriter(Writer out);获得指定字符输出流的字符打印流对象。

    4. PrintWriter(Writer out, boolean autoflush);获得指定字符输出流的字符打印流对象。autoflush 是否自动刷新。

    5. 等...

22.2.2 打印流的常用操作:print(), println()

  1. print();不带换行的打印输出。

    try {
        File file = new File("test.txt");
        FileOutputStream fos = new FileOutputStream(file);
        PrintWriter ps = new PrintWriter(fos,true);
        ps.print("天青色等烟雨,");
        ps.print("而我在等你。");
        ps.print("炊烟袅袅升起,");
        ps.print("晕开了结局。");
        ps.close();    
    }...
    

    效果:

  2. println();每打印出一行数据后,执行换行。

    try {
        File file = new File("test.txt");
        FileOutputStream fos = new FileOutputStream(file);
        PrintWriter ps = new PrintWriter(fos,true);
        ps.println("天青色等烟雨,");
        ps.println("而我在等你。");
        ps.println("炊烟袅袅升起,");
        ps.println("晕开了结局。");
        ps.close();    
    }...
    

    效果:

    笔记(注意):
    查看源码分析这几个类
    1.Scanner
    2.System.in/out/err:实际上针对控制台而不是磁盘操作的字节流
      public final static InputStream in = null;
      //System.in :in实际上是字节输入流
      public final static PrintStream out = null;
     // System.out :out实际上是字节输出流
      public final static PrintStream err = null;
     //System.err :err实际上是字节输出流
    
    3.从控制台输出:
        System.out.println("好好学习天天向上!");
        //System.out.close();
    
        PrintStream ps = new PrintStream(new FileOutputStream(FileDescriptor.out));
        ps.println("好好学习天天向上!");
        //ps.close();//此处流关闭,则FileDescriptor.out会关闭,则下面的无法输出打印
    
        PrintWriter pw = new PrintWriter(new FileWriter(FileDescriptor.out));
        pw.println("好好学习天天向上!");
        //pw.close();
    //(第二个方式和第三个方式一起使用则只有一个可以打印,若第一个和其它的混用的时候注意不能随便关闭流,否则会出现后面的不打印的效果,可以测试。)
    
    4.从控制台输入:
        //System.out.println("请输入:");
        Scanner scan = new Scanner(System.in);
        scan.next();
        //scan.close();
    
        //System.out.println("请输入:");
        Scanner scan1 = new Scanner(new FileInputStream(FileDescriptor.in));
        scan1.next();
        //scan1.close();
    

results matching ""

    No results matching ""