Java-Java I/O流解读之java.io.PrintStream & java.io.PrintWriter

举报
小工匠 发表于 2021/09/10 00:30:18 2021/09/10
【摘要】 概述示例代码 概述 JavaI/O流分为两类,字节流和字符流。 字节流是指InputStream/OutputStream及其子类, 字符流是指Reader/Writer及其子类。...

概述

JavaI/O流分为两类,字节流和字符流。
字节流是指InputStream/OutputStream及其子类,
字符流是指Reader/Writer及其子类。

这两类I/O流的class hierarchy基本上是对等的,InputStreamReader/OutputStreamWriter是InputStream/OutputStream和Reader/Writer之间的桥梁。

PrintStream是OutputStream的子类,PrintWriter是Writer的子类,两者处于对等的位置上.

这里写图片描述

PrintStream 在 OutputStream 基础之上提供了增强的功能 , 即可以方便的输出各种类型的数据 ( 而不仅限于 byte 类型 ).PrintStrem 的方法从不抛出 IOException.

Printwriter 提供了 PrintStream 的所有打印方法 , 其方法也从不抛出 IOException

与 PrintStream 的区别 : 作为处理流使用时 ,PrintStream 只能封装 OutputStream 类型的字节流 , 而 PrintWriter 既可以封装 OutputStream, 也能封装 Writer 类型的字符输出流并增强其功能 .

一个字符(char)是16bit,一个BYTE是8bit. PrintStream是写入一串8bit的数据。
PrintWriter是写入一串16bit的数据。

基于字节的java.io.printSteam支持方便的打印方法,如print()和println(),用于打印原语和文本字符串。

在JDK 1.5中引入了printf()和format(),用于符格式化输出。 printf()和format()是一样的。

PrintStream不会抛出IOException。相反,它设置一个可以通过checkError()方法检查的内部标志。还可以创建一个PrintStream来自动刷新输出。也就是说,flush()方法在写入一个字节数组之后被自动调用,其中一个println()方法被调用,或者在一个换行符(’\ n’)被写入之后。

标准输出和错误流(System.out和System.err)属于PrintStream。

PrintStream打印的所有字符都将使用默认字符编码转换为字节。在需要编写字符而不是字节的情况下,应使用PrintWriter类。

字符流PrintWriter类似于PrintStream,除了它以字符而不是字节编写。 PrintWriter还支持print(),println(),printf()和format()的所有方便的打印方式。它不会抛出IOException,并且可以选择创建以支持自动刷新。

示例

PrintStreamDemo

package com.xgj.master.java.io.fileDemo.characterStreams;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;

import org.junit.Test;

/**
 * 
 * 
 * @ClassName: PrintStreamDemo
 * 
 * @Description: PrintStream is subclass of OutputStream that adds extra
 *               functionality to print different type of data.
 * 
 *               PrintStream never throws IOException.
 * 
 *               PrintStream is automatically flushed when a byte array is
 *               written.
 * 
 * @author: Mr.Yang
 * 
 * @date: 2017年9月7日 下午2:21:01
 */
public class PrintStreamDemo {

    @Test
    public void test() {
        // Write data on console using PrintStream
        PrintStream pConsol = new PrintStream(System.out);
        try {
            pConsol.write("Data to Write on Console using PrintStream".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
        // flush stream
        pConsol.flush();
        // close stream
        pConsol.close();

        // Write data in file using PrintStream
        PrintStream pFile = null;
        try {
            pFile = new PrintStream("D:\\xgj.txt");
            pFile.write("Data to Write in File using PrintStream".getBytes());
            pFile.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // close stream
            if (pFile != null) {
                pFile.close();
            }
        }
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

PrintWriterDemo

package com.xgj.master.java.io.fileDemo.characterStreams;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

import org.junit.Test;

/**
 * 
 * 
 * @ClassName: PrintWriterDemo
 * 
 * @Description: PrintWriter is the implementation of Writer class.
 * 
 *               PrintWriter is used to print formatted representation to
 *               text-output-stream.
 * 
 * 
 *               PrintWriter can also be enabled for automatic flush whenever a
 *               newline character is written.
 * 
 * @author: Mr.Yang
 * 
 * @date: 2017年9月7日 下午2:27:13
 */
public class PrintWriterDemo {

    @Test
    public void test() {
        // Write data on console using PrintWriter
        PrintWriter pwConsole = new PrintWriter(System.out);
        pwConsole.write("Data to Write on Console using PrintWriter");
        pwConsole.flush();
        pwConsole.close();

        // Write data in file using PrintWriter
        PrintWriter pwFile = null;
        try {
            pwFile = new PrintWriter(new File("D:/text.txt"));
            pwFile.write("Data to Write in File using PrintWriter");
            pwFile.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            pwFile.close();
        }
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

代码

代码已托管到Github—> https://github.com/yangshangwei/JavaMaster

文章来源: artisan.blog.csdn.net,作者:小小工匠,版权归原作者所有,如需转载,请联系作者。

原文链接:artisan.blog.csdn.net/article/details/77889436

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。