1、只有输出流才有打印流:PrintWriter和PrintStream分别针对字符和字节,提供了重载的print,Println方法用于多种数据类型的输出。PrintWriter和PrintStream操作不会抛出异常,数据没打印出来也不会抛异常。
2、System.out.print(Object object)调用的是Object实体类的toString()方法。
3、PrintWriter和PrintStream有自动的flush功能,不需要手动调用flush方法。*这里必须强调一点:PrintWriter的自动flush功能,只有在new PrintWriter对象的时候调用PrintWriter(Writer out, boolean autoFlush),并将 autoFlush设置为true才会自动flush,否则不会自动flush,必须手动printWriter.flush()才能成功打印数据。
     另外,PrintWriter方法不仅可以套在Writer字符输出流的外面,还可以套在字节输出流外面,PrintWriter的构造方法如下:
PrintStream的具体构造方法如下图:
4、System.out.println()中,java.lang.System.out中的out就是PrintStream类型的。
 
练习小程序1:
package test.io.print;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
public class PrintStreamTest {
     public static void main(String args[]){
           PrintStream ps = null;
           FileOutputStream fos = null;
           try {
                fos = new FileOutputStream("E:/技术学习/java/test/Socket/test6.txt");
                ps = new PrintStream(fos);
                System.setOut(ps);//不再是控制台输出,而是输出到FileOutputStream所指向的文件中。
                for(int i=0; i<3000; i++){
                     System.out.print(i+" ");
                }
           } catch (FileNotFoundException e) {
                e.printStackTrace();
           } finally{
                try {
                     if(ps != null){
                           ps.close();
                     }
                     if(fos != null){
                           fos.close();
                     }
                }catch (IOException e){
                     e.printStackTrace();
                }
           }    
     }
}
 
练习小程序2:从控制台输入内容,并将控制台输入的内容打印到文件中,类似于记日志
package test.io.print;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Date;
 
public class PrintWriterTest {
    public static void main(String args[]){
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String s = null;
        PrintWriter pw = null;
        try {
            //PrintWriter构造方法将是否自动flush设置成了true,即可自动flush,如果没设置true,则必须手动调用flush方法,才能把内容打印到文件中
            pw = new PrintWriter(new FileWriter("E:/技术学习/java/test/Socket/test7.txt",true),true);
            while((s=bf.readLine()) != null){
                if(s.equals("exit")){
                    break;
                }
                System.out.println(s);
                pw.println("---------------------------------------");
                pw.println(s);
                //pw.flush();
            }
            pw.println("-------------"+new Date()+"------------");
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try {
                if(bf != null){
                    bf.close();
                }
                if(pw != null){
                    pw.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

Java IO学习笔记(四)打印流的更多相关文章

  1. Java IO学习笔记四:Socket基础

    作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...

  2. Java IO学习笔记四

    内存操作流 之前的所有的流操作都是针对文件的,但是有时候只是想要实现数据间转换,此时如果我们想要创建一个文件然后再删除文件,那样显得有点麻烦,因此此时的内存操作流就显得很适合这类的操作,因为它只是在内 ...

  3. Java IO学习笔记:概念与原理

    Java IO学习笔记:概念与原理   一.概念   Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...

  4. Java IO学习笔记总结

    Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下 基本的文件操作 字符流和字节流的操作 InputStreamReader和OutputStreamW ...

  5. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  6. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  7. 零拷贝详解 Java NIO学习笔记四(零拷贝详解)

    转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...

  8. Java IO学习笔记五:BIO到NIO

    作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...

  9. Java IO学习笔记七:多路复用从单线程到多线程

    作者:Grey 原文地址:Java IO学习笔记七:多路复用从单线程到多线程 在前面提到的多路复用的服务端代码中, 我们在处理读数据的同时,也处理了写事件: public void readHandl ...

  10. Java IO学习笔记一

    Java IO学习笔记一 File File是文件和目录路径名的抽象表示形式,总的来说就是java创建删除文件目录的一个类库,但是作用不仅仅于此,详细见官方文档 构造函数 File(File pare ...

随机推荐

  1. Linux-Zabbix 邮件报警设置

    系统环境 Ubuntu 16.04 在Zabbix服务器端 安装sendmail sudo apt install sendmail 测试发送邮件 echo "正文!" | mai ...

  2. MySQL 主从复制与读写分离概念及架构分析 (转)

    1.MySQL主从复制入门 首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中. 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的33 ...

  3. 开涛spring3(6.7) - AOP 之 6.7 通知顺序

    如果我们有多个通知想要在同一连接点执行,那执行顺序如何确定呢?Spring AOP使用AspectJ的优先级规则来确定通知执行顺序.总共有两种情况:同一切面中通知执行顺序.不同切面中的通知执行顺序. ...

  4. Github+Hexo,搭建专有博客

    前言 记得从大二开始,就一直想搭个专属网站,当时使劲抠页面[前端页面是从QQ空间抠的,现在想抠估计没这么容易了],写代码,忙活半天才把程序弄好. 可惜最终项目还是没上线,因为当时有两问题绕不开 需要购 ...

  5. MySQL优化总结,百万级数据库优化方案

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  6. Fast data loading from files to R

    Recently we were building a Shiny App in which we had to load data from a very large dataframe. It w ...

  7. Redis基本数据类型以及String(一)

    前言:     Redis也有自己的数据类型,包含string,list,hash,set,sorted set.下面就对每种数据类型原理以及操作做一个详细的介绍.     Redis是面向编程的语言 ...

  8. js实现导航菜单栏随着屏幕的滚动进行滚动的效果

    $(window).scroll(function () { var $nav = $(".floatingMenu ul li"), length = $nav.length-1 ...

  9. python学习第三个坑

    ##########################python 第三章 ################################这一章呢,主要是文件的操作,还有涉及到函数的一部分. PS:整 ...

  10. 资深小白带你走进OS Memory

    图片来源:http://www.tomshardware.com/ 序言: Memory(内存)是一台计算机组成的重要部分,也是最基础的一部分.其它基础组件有主板.CPU.磁盘.显卡(可独立可集成)等 ...