详解 打印流

目录

  • 打印流

    • PrintStream 类:
    • PrintWriter 类:

(请观看本人博文——《详解 I/O流》)



打印流

概述

打印流分为:字节流打印流字符打印流
通过这两个流,我们可以向所关联的文件 或 或控制台 打印数据
打印流只有输出流没有输入流

特点

  • 打印流只能操作目的地,不能操作数据源
    (不能进行读取数据)
  • 可以操作任意数据类型的数据,调用print() 方法可以写任意数据类型

那么,现在,本人来介绍下 字节流打印流(PrintStream 类):

PrintStream 类:

概述

PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。
异常情况仅设置可通过 checkError 方法测试的内部标志。
另外,为了自动刷新,可以创建一个 PrintStream;
这意味着可在写入 byte 数组之后自动调用 flush 方法,可调用其中一个 println 方法,或写入一个换行符或字节 (‘\n‘)。
PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。
在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。

现在,本人来展示下这个类的构造方法

构造方法

  • PrintStream(File file)
    创建具有指定文件的新打印流
  • PrintStream(File file, String csn)
    创建具有指定文件名称字符集的新打印流
  • PrintStream(OutputStream out)
    创建新的打印流
  • PrintStream(OutputStream out, boolean autoFlush)
    创建新的打印流
  • PrintStream(OutputStream out, boolean autoFlush, String encoding)
    创建新的打印流
  • PrintStream(String fileName)
    创建具有指定文件名称的新打印流
  • PrintStream(String fileName, String csn)
    创建具有指定文件名称字符集的新打印流

那么,现在,本人来展示下这个类的API
常用API

  • void close()
    关闭此流,并自动清空缓冲区的内容
  • PrintStream append(char c)
    将指定字符添加到此输出流
  • PrintStream append(CharSequence csq)
    将指定字符序列添加到此输出流
  • PrintStream append(CharSequence csq, int start, int end)
    将指定字符序列的子序列添加到此输出流
  • boolean checkError()
    刷新流并检查其错误状态
  • protected void clearError()
    清除此流的内部错误状态
  • void close()
    关闭流
  • void flush()
    刷新该流的缓冲
  • PrintStream format(Locale l, String format, Object... args)
    使用指定格式字符串和参数将格式化字符串写入此输出流中
  • PrintStream format(String format, Object... args)
    使用指定格式字符串和参数将格式化字符串写入此输出流中
  • void print(boolean b)
    打印 boolean 值
  • void print(char c)
    打印字符
  • void print(char[] s)
    打印字符数组
  • void print(double d)
    打印双精度浮点数
  • void print(float f)
    打印浮点数
  • void print(int i)
    打印整数
  • void print(long l)
    打印 long 整数
  • void print(Object obj)
    打印对象
  • void print(String s)
    打印字符串
  • PrintStream printf(Locale l, String format, Object... args)
    使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法
  • PrintStream printf(String format, Object... args)
    使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法
  • void println()
    通过写入行分隔符字符串终止当前行
  • void println(boolean x)
    打印 boolean 值,然后终止行
  • void println(char x)
    打印字符,然后终止该行
  • void println(char[] x)
    打印字符数组,然后终止该行
  • void println(double x)
    打印 double,然后终止该行
  • void println(float x)
    打印 float,然后终止该行
  • void println(int x)
    打印整数,然后终止该行
  • void println(long x)
    打印 long,然后终止该行
  • void println(Object x)
    打印 Object,然后终止该行
  • void println(String x)
    打印 String,然后终止该行
  • protected void setError()
    将该流的错误状态设置为 true
  • void write(byte[] buf, int off, int len)
    将 len 字节从指定的初始偏移量为 off 的 byte 数组写入此流
  • void write(int b)
    将指定的字节写入此流

那么,在之前的博文中,本人展示的都是向文件中录入数据,相信同学们都知道了那些操作的套路了,那么,现在,本人展示下向控制台输出数据:

package edu.youzg.about_io.about_file.core.Test;

import java.io.*;

public class Test {

    public static void main(String[] args) throws IOException {
        PrintStream out = System.out;
        out.write("右转哥".getBytes());
        out.println(666);
        out.print("我要单推右转哥");
        out.close();
    }

}

那么,现在,我们来看一下运行结果:



那么,现在,本人来讲解下 字符打印流(PrintWriter 类):

PrintWriter 类:

概述

向文本输出流打印对象的格式化表示形式。
此类实现在 PrintStream 中的所有 print 方法。
不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。
与 PrintStream 类不同,如果启用了自动刷新,
则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作,
而不是每当正好输出换行符时才完成。
这些方法使用平台自有的行分隔符概念,而不是换行符。
此类中的方法不会抛出 I/O 异常,尽管其某些构造方法可能抛出异常。
客户端可能会查询调用 checkError() 是否出现错误

现在,本人来介绍下这个类的构造方法

构造方法

  • PrintWriter(File file)
    使用指定文件创建不具有自动行刷新的新 PrintWriter
  • PrintWriter(File file, String csn)
    创建具有指定文件和字符集不带自动刷行新的新 PrintWriter
  • PrintWriter(OutputStream out)
    根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter
  • PrintWriter(OutputStream out, boolean autoFlush)
    通过现有的 OutputStream 创建带自动行刷新的新的 PrintWriter
  • PrintWriter(String fileName)
    创建具有指定文件名称不带自动行刷新的新 PrintWriter
  • PrintWriter(String fileName, String csn)
    创建具有指定文件名称和字符集不带自动行刷新的新 PrintWriter
  • PrintWriter(Writer out)
    创建不带自动行刷新的新 PrintWriter
  • PrintWriter(Writer out, boolean autoFlush)
    创建带自动行刷新的新 PrintWriter

本人再来展示下这个类的常用API:

常用API:

  • PrintWriter append(char c)
    将指定字符添加到此 writer。
  • PrintWriter append(CharSequence csq)
    将指定的字符序列添加到此 writer。
  • PrintWriter append(CharSequence csq, int start, int end)
    将指定字符序列的子序列添加到此 writer。
  • boolean checkError()
    如果流没有关闭,则刷新流且检查其错误状态。
  • protected void clearError()
    清除此流的错误状态。
  • void close()
    关闭该流并释放与之关联的所有系统资源。
  • void flush()
    刷新该流的缓冲。
  • PrintWriter format(Locale l, String format, Object... args)
    使用指定格式字符串和参数将一个格式化字符串写入此 writer 中。
  • PrintWriter format(String format, Object... args)
    使用指定格式字符串和参数将一个格式化字符串写入此 writer 中。
  • void print(boolean b)
    打印 boolean 值。
  • void print(char c)
    打印字符。
  • void print(char[] s)
    打印字符数组。
  • void print(double d)
    打印 double 精度浮点数。
  • void print(float f)
    打印一个浮点数。
  • void print(int i)
    打印整数。
  • void print(long l)
    打印 long 整数。
  • void print(Object obj)
    打印对象。
  • void print(String s)
    打印字符串。
  • PrintWriter printf(Locale l, String format, Object... args)
    使用指定格式字符串和参数将格式化的字符串写入此 writer 的便捷方法。
  • PrintWriter printf(String format, Object... args)
    使用指定格式字符串和参数将格式化的字符串写入此 writer 的便捷方法。
  • void println()
    通过写入行分隔符字符串终止当前行。
  • void println(boolean x)
    打印 boolean 值,然后终止该行。
  • void println(char x)
    打印字符,然后终止该行。
  • void println(char[] x)
    打印字符数组,然后终止该行。
  • void println(double x)
    打印双精度浮点数,然后终止该行。
  • void println(float x)
    打印浮点数,然后终止该行。
  • void println(int x)
    打印整数,然后终止该行。
  • void println(long x)
    打印 long 整数,然后终止该行。
  • void println(Object x)
    打印 Object,然后终止该行。
  • void println(String x)
    打印 String,然后终止该行。
  • protected void setError()
    指示已发生错误。
  • void write(char[] buf)
    写入字符数组。
  • void write(char[] buf, int off, int len)
    写入字符数组的某一部分。
  • void write(int c)
    写入单个字符。
  • void write(String s)
    写入字符串。
  • void write(String s, int off, int len)
    写入字符串的某一部分

那么,现在,本人来展示下这个类的使用:

package edu.youzg.about_io.about_file.core.Test;

import java.io.*;

public class Test {

    public static void main(String[] args) throws IOException{
        //如果启用了自动刷新,则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作
        PrintWriter writer = new PrintWriter(new FileOutputStream("test.txt"),true);
        writer.println("图画里");
        writer.write("龙不吟");
        writer.println();
        writer.print("虎不啸");
        writer.print("\r\n");
        writer.println("小小书童");
        writer.println("可笑可笑");
        writer.close();
    }

}

现在,本人来展示下运行后生成的文件的内容:

本人在上面说过,此流只有输出流,没有输入流。
但是,这并不意味着,此流不能用于文件的复制操作
那么,现在,本人就来展示下利用字符打印流来完成文件的复制:

package edu.youzg.about_io.about_file.core.Test;

import java.io.*;

public class Test {

    public static void main(String[] args) throws IOException{
        BufferedReader reader = new BufferedReader(new FileReader("test.txt"));

        PrintWriter printWriter = new PrintWriter(new FileOutputStream("copyFile.txt"),true);
        String line = null;
        while ((line=reader.readLine())!=null){
            printWriter.println(line);
        }

        //释放资源
        reader.close();
        printWriter.close();
    }

}

那么,本人来展示下生成的复制文件的内容:

(本人 I/O流总集篇 博文链接:https:////www.cnblogs.com/codderYouzg/p/12418404.html

原文地址:https://www.cnblogs.com/codderYouzg/p/12418665.html

时间: 2024-08-30 06:07:58

详解 打印流的相关文章

详解 序列化流 与 反序列化流

目录 序列化流 与 反序列化流 ObjectOutputStream 类: (序列化流) ObjectInputStream 类: (反序列化流): (请观看本人博文--<详解 I/O流>) @ 序列化流 与 反序列化流 可能同学们看到本篇博文时会有如下问题: 什么是 序列化 与 反序列化 呢? 那么,现在,本人就来讲解下这两个名词的定义: 序列化: 就是把对象通过流的方式存储到文件中 反序列化: 就是把文件中存储的对象以流的方式还原成对象 现在,本人再来介绍下这两个流的作用: ObjectI

第三天:JS事件详解-事件流

学习来源: F:\新建文件夹 (2)\HTML5开发\HTML5开发\04.JavaScript基础\6.JavaScript事件详解 学习内容:  1)基础概念 2)举例说明: 代码如上,如果用事件冒泡的方式来解释,先点击到接受时间的按钮,然后是div,因为按钮包含在div中,然后是html5然后到文档 事件的捕获,首先是文档接收, 然后是html 然后是div 最后是最具体的元素button来接收 学后感: 只是记住了它的意思,但是并没有明白有什么实际意义

06JavaIO详解_IO流中的设计模式-装饰者模式

Io流里面的过滤流和节点流用的就是装饰者模式.整个的IO体系就是装饰模式. 这个写法就是装饰者模式.对上面的三个已经存在的类(DataOutputStream,BufferedOutputStream,FileOutputStream)进行组合,具有三种功能. 对于DataOutputStream dos=new DataOutStream(new BufferedOutputStream(new FileOutputStream("data.txt"))); 这行代码来说. OutP

02JavaIO详解_IOl流的三种分类以及InputStream和OutputStream

IO流指的就是输入流和输出流.怎么定义输入和输出流呢,以程序为参考,流入到程序里就是输入流,从程序里面流出去就是输出流. 输入/输出流的介绍: 流有三种分类: 1.  从功能上分为:输入流和输出流. 2.从流结构上分为:字节流和字符流. 3.节点流和过滤流. 说明:上面提到了字节流和字符流.其实字符流就是以字节流为基础的,我们操纵String更加方便啊,所以有了字符流.字节流掌握好以后,字符流就很简单了. 字符流和字节流的说明: 字节流的基础是InputStream和OutputStream.我

03JavaIO详解_IO流分类中的节点流和过滤流

我们上一篇文章讲了InputStream(输入流).输入流里面有两种流:节点流和过滤流.我们这篇文章讲一下这个. 回顾什么是节点流:节点流就是直接和目标打交道的. 过滤流:就是直接和节点流打交道的. InputStream的节点流和过滤如下所示: 解释一下上面这张图:对于InutStream来说有这么多的子类.其中FilterInputStream(他的子类DataInputStream,BufferedInputStream....都是过滤流)是过滤流,其他都是节点流. 我们再讲一下输出流(o

cobbler批量安装系统使用详解-技术流ken

1.前言 cobbler是一个可以实现批量安装系统的Linux应用程序.它有别于pxe+kickstart,cobbler可以实现同个服务器批量安装不同操作系统版本. 2.系统环境准备及其下载cobbler 一.系统环境 系统版本:CentOS release 6.7 (Final) 内网IP:192.168.232.7/24    #用来对内通信,提供cobbler服务 外网IP:10.220.5.166/24      #连接外网 二. 关闭安全服务 [[email protected] ~

NFS企业级实战应用详解-技术流ken

1.简介 在上一篇博文中讲述了samba的实战应用,samba使得window和linux共享文件成为可能.NFS则实现了linux与linux之间的文件共享. 2.系统环境 系统版本:centos6.7 服务器IP: 10.220.5.166/24 客户端IP: 10.220.5.188/24 3.关闭安全服务 [[email protected] ~]# service iptables stop [[email protected] ~]# setenforce 0 4.下载NFS 当nf

samba企业级实战应用详解-技术流ken

1.简介 Samba是一套使用SMB(Server Message Block)协议的应用程序, 通过支持这个协议, Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为可能. 2.系统环境 系统版本:centos6.7 服务器IP: 10.220.5.166/24 3.关闭安全服务 [[email protected] ~]# service iptables stop [[email protected] ~]# setenforce 0 4. 安装samba

linux四剑客-grep/find/sed/awk/详解-技术流ken

1.四剑客简介 相信接触过linux的大家应该都学过或者听过四剑客,即sed,grep,find,awk,有人对其望而生畏,有人对其爱不释手.参数太多,变化形式太多,使用超级灵活,让一部分人难以适从继而望而生畏,浅尝辄止即罢.有人熟练掌握,使其四剑客为己所用,在分析日志,分析文本,统计,批量修改中游刃有余,大大提高了工作效率.本篇博文将详细讲解四剑客的参数选项,以及使用案例,相信认真读完本篇博文你也可以使得四剑客真正为己所用. 2.四剑客之grep 1.几个概念 正则表达式:Regular Ex