PrintStream和PrintWriter的区别简介

 更新时间:2018年01月09日 09:51:21   作者:御风逍遥  
这篇文章主要介绍了PrintStream和PrintWriter的区别简介,具有一定借鉴价值,需要的朋友可以参考下

PrintStream和PrintWriter的API几乎相同,都能输出各种形式的数据,构造方法也几乎相同

PrintWriter多了个接受Writer参数

API比较:

那么,它们的区别究竟在哪里?来自stackflow

主要意思就是,2个类的功能基本相同,PrintStream能做的PrintWriter也都能实现,并且PrintWriter的功能更为强大。但是由于PrintWriter出现的比较晚,较早的System.out使用的是PrintStream来实现的,所以为了兼容就没有废弃PrintStream。

2个类最大的差别是,PrintStream在输出字符,将字符转换为字节时采用的是系统默认的编码格式,这样当数据传输另一个平台,而另一个平台使用另外一个编码格式解码时就会出现问题,存在不可控因素。而PrintWriter可以在传入Writer时可由程序员指定字符转换为字节时的编码格式,这样兼容性和可控性会更好。

下面这个程式显示了PrintStream与PrintWriter两个物件在处理相同输出目的时的作法,程式将会在荧幕上显示 "简体中文" 四个字元:

StreamWriterDemo.java  
package onlyfun.caterpillar;
import java.io.*;
public class StreamWriterDemo  
{
	public static void main(String[] args)  {
		try  {
			byte[] sim = {(byte)0xbc, (byte)0xf2, // 简  
			(byte)0xcc, (byte)0xe5, // 体  
			(byte)0xd6, (byte)0xd0, // 中  
			(byte)0xce, (byte)0xc4
		}
		;
		// 文  
		InputStreamReader inputStreamReader = new InputStreamReader(new ByteArrayInputStream(sim), "GB2312");
		PrintWriter printWriter =new PrintWriter(new OutputStreamWriter(System.out, "GB2312"));
		PrintStream printStream =new PrintStream(System.out, true, "GB2312");
		int in;
		while((in = inputStreamReader.read()) != -1)  {
			printWriter.println((char)in);
			printStream.println((char)in);
		}
		inputStreamReader.close();
		printWriter.close();
		printStream.close();
	}
	catch(ArrayIndexOutOfBoundsException e)  {
		e.printStackTrace();
	}
	catch(IOException e) {
		e.printStackTrace();
	}
}
}

总结

以上就是本文关于PrintStream和PrintWriter的区别简介的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • Java实现视频时间维度剪切的工具类

    Java实现视频时间维度剪切的工具类

    这篇文章主要为大家详细介绍了将视频按照时间维度进行剪切的Java工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • 基于java实现具有时效性文件链接

    基于java实现具有时效性文件链接

    这篇文章主要为大家详细介绍了如何基于java实现具有时效性的文件链接,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解一下
    2023-12-12
  • 详解java中接口与抽象类的区别

    详解java中接口与抽象类的区别

    这篇文章主要介绍了详解java中接口与抽象类的区别的相关资料,希望通过本文能帮助到大家,让大家轻松理解掌握接口与抽象类的区别,需要的朋友可以参考下
    2017-10-10
  • Java中难理解的四个概念

    Java中难理解的四个概念

    这篇文章主要介绍了匿名内部类、多线程、如何实现同步、序列化,这四个难理解的概念,同学们一定要仔细看看
    2021-04-04
  • spring-boot 禁用swagger的方法

    spring-boot 禁用swagger的方法

    本篇文章主要介绍了spring-boot 禁用swagger的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Spring Boot使用profile如何配置不同环境的配置文件

    Spring Boot使用profile如何配置不同环境的配置文件

    ,springboot支持通过不同的profile来配置不同环境的配置,下面就大致介绍一下yml配置文件跟properties配置文件怎么使用profile配置不同环境的配置文件
    2018-01-01
  • Java中HashMap里面key为null存放到哪

    Java中HashMap里面key为null存放到哪

    这篇文章主要介绍了Java中HashMap里面key为null存放到哪,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • java对象与json对象间的相互转换的方法

    java对象与json对象间的相互转换的方法

    本篇文章主要介绍了java对象与json对象间的相互转换的方法,详细介绍了json字符串和java对象相互转换,有兴趣的可以了解一下
    2017-01-01
  • 利用POI读取word、Excel文件的最佳实践教程

    利用POI读取word、Excel文件的最佳实践教程

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。 下面这篇文章主要给大家介绍了关于利用POI读取word、Excel文件的最佳实践的相关资料,需要的朋友可以参考下。
    2017-11-11
  • 聊聊Java BigInteger里面的mod和remainder的区别

    聊聊Java BigInteger里面的mod和remainder的区别

    这篇文章主要介绍了聊聊Java BigInteger里面的mod和remainder的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08

最新评论