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. Git简略教程

    Git使用教程 厂里大部分后端应用的版本控制工具为SVN,前端代码则更习惯于Git,好久不用Git有些生疏,复习一下,效率就是生命. 1.拉取远程分支到本地 git clone + 代码地址 + 分支 ...

  2. 选择排序——Python实现

    选择排序: 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小( ...

  3. Python教程(2.1)——控制台输入

    这一节,我们来学习如何写一个简单的Python程序. 我们知道,很多编程语言一开始就是学习怎么输出"Hello, world",对吧?那么,现在我们来学习怎么用Python输出&q ...

  4. JVM-1.编译

    目录 一.编译器概述 二.编译器组成 三.示例 四.深入理解JVM中的编译器 五.语法糖 六.补充     一.编译器概述 1.编译器实质 编译器的实质是将一种语言规范转化为另一种语言规范:由人容易理 ...

  5. 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome

    使用Eclipse开发Javaweb项目时,在Eclipse中显示页面不是很好,那么如何让它自动打开外置浏览器呢?操作如下

  6. python中defaultdict的用法

    初识defaultdict 之前在使用字典的时候, 用的比较随意, 只是简单的使用dict. 然而这样在使用不存在的key的时候发生KeyError这样的一个报错, 这时候就该defaultdict登 ...

  7. PHP 获取系统信息,PHP 获取服务器详细信息

    获取系统类型及版本号:    php_uname()                                   (例:Windows NT COMPUTER 5.1 build 2600)只 ...

  8. javascript痛点之三闭包

    先来看看第一节的例子 'use strict'; function num(){ //用var声明一个变量num1 var num1 = 15; } alert(num1);//num1 is not ...

  9. hibernate配置三步走

    1.导入有hibernate的required和jpa的jar包,数据库驱动jar包,日志jar包 2.创建实体类,必须有一个属性有唯一的值 package com.hui.hibernate; pu ...

  10. [编织消息框架][netty源码分析]6 ChannelPipeline 实现类DefaultChannelPipeline职责与实现

    ChannelPipeline 负责channel数据进出处理,如数据编解码等.采用拦截思想设计,经过A handler处理后接着交给next handler ChannelPipeline 并不是直 ...