//PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式
//PrintStream不同于PrintWriter,PrintStream输出的是字节内容。
//public PrintStream(OutputStream out)创建新的打印流。
PrintStream ps=new PrintStream(new FileOutputStream(new File("文件名.txt"),true));//第二个参数是免覆盖
免去用inputstream。fileinputstream,bufferedwriter(字节,字符,缓冲,数组,数据,文件,对象。。。。。。流).....的创建.
直接将本该从控制台输出的东西输到文件里。感觉很方便
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、(以下来自http://hi.baidu.com/shdren09/item/8b1d2631e78b7abf623aff3f

PrintWriter和PrintStream的区别与联系

PrintStream类和PrintWriter类

PrintStream主要操作byte流,而PrintWriter用来操作字符流。读取文本文件时一般用后者。

java的一个字符(char)是16bit的,一个BYTE是8bit的 
PrintStrean是写入一串8bit的数据的。 
PrintWriter是写入一串16bit的数据的。 
String缺省是用UNICODE编码,是16bit的。因此用PrintWriter写入的字符串,跨平台性好一些吧。 
PrintStream的可能会出现字符集乱码吧。

PrintStream是用来操作byte, 
PrintWriter是用来操作Unicode, 
一般需要处理中文时用PrintWriter好了

Stream用于二进制文件(非文本) 
Writer/Reader用于文本文件(虽然也是二进制,不过是按照一定的字符编码规则,不像前者) 
当然Stream也可用于文本,只不过比writer/reader来的麻烦

PrintStream主要操作byte流,而PrintWriter用来操作字符流。读取文本文件时一般用后者。

---------------------------------------------------

java 输出流中的PrintStream 和 PrintWriter有什么区别,好像很多场合都能混用
比如用于网络间通信,发送消息时,可用PrintStream 也可用 PrintWriter
    eg:
         Socket client;
          PrintStream output = new PrintStream(client.getOutputStream());
          output.println("aaa");
          output.flush();
        把上例中的 PrintStream 换成 PrintWriter效果是一样的。Java I/O流分为两类,字节流和字符流。字节流是指InputStream/OutputStream及其子类,字符流是指Reader/Writer及其子类。这两类I/O流的class hierarchy基本上是对等的,InputStreamReader/OutputStreamWriter是InputStream/OutputStream和Reader/Writer之间的桥梁。

PrintStream是OutputStream的子类,PrintWriter是Writer的子类,两者处于对等的位置上,所以它们的API是非常相似的。PrintWriter实现了PritnStream的所有print方法。对于PrintStream,所有println方法都在内部调用相应的print方法,比如println(char x)的方法体就是调用print(x);再写入一个平台相关的换行符。PrintStream构建时会在内部new一个BufferedWriter,所有print方法都在内部调用这个Writer的write方法(write(String)或write(char[]))——对于print(char[]),直接调用write(char[]);对于其他的print方法,先用String.valueOf获得参数的字符串表示,然后调用write(String)。
         对于PrintWriter,所有println方法也都在内部调用print方法,print方法调用write方法。传入OutputStream时,PrintWriter会在内部构造一个BufferedWriter;而传入Writer时,PrintStream内部直接使用该Writer,此时PrintWriter是否进行了缓冲全看该Writer。
所以,对于使用print系列方法的场合,二者没什么区别。

但是,PrintStream是字节流,它有处理raw byte的方法,write(int)和write(byte[],int,int);PrintWriter是字符流,它没有处理raw byte的方法。PrintStream和PrintWriter的auto flushing机制有点不同,前者在输出byte数组、调用println方法、输出换行符或者byte值10(即\n)时自动调用flush方法,后者仅在调用println方法时发生auto flushing。
System.out是PrintStream。其实这些东西API文档中都有。

--------------------------------------------------------

  PrintStream类是过滤器类中一个不可忽视的成员,最基本的标准输出就要借助于它——我们常用的System.out变量就是PrintStream实例。与之对应的字符流类是PrintWriter类。 
  PrintStream有两个构造函数(在新版API中已标记为过时): 
  ■public PrintStream(OutputStream out) 
  ■public PrintStream(OutputStream out,boolean autoFlush) 
其中,autoFlush置为true时,每当输出遇到换行符,缓冲区的内容就被强制全部输出,如同调用了一次flush()。但要注意,如果没遇到换行符,还是会有数据“憋”在缓冲区里。 
  方法(已熟悉的就不解释): 
  ■public void write(int b) 
  ■public void write(byte b,int offset,int length) 
  ■public void flush() 
  ■public void close() 
  ■public void print(Object obj) 
  这个方法功能是 非常强大的,它可以输出任何对象,而不必另加说明。此外print()方法有许多重载形式,即有多种参数。它们是字符串(String)、字符数组 (char[])、字符(char)、整数(int)、长整数(long)、浮点数(float)、双精度浮点数(double)、布尔值 (boolean)。其中,输出多个数单位的print()方法(也就是指参数为String和char[]的)是同步(synchronized)方 法。 
  ■public void println()输出一个换行符。 
  ■public synchronized void println(Object obj) 
  println()方法有9个重载形式,几乎就是print()方法的翻版。唯一的区别在于println()方法都是同步的。 
  ■public boolean checkError() 
  检查输出过程中有什么错误,如有,返回true值。只要输出流中出现一次错误,则出错后的任意对checkError()的调用均会返回真值。 
  下面介绍PrintWriter类。 
  如同第二节中所说,PrintWriter是JDK1.1版增加了与字节流I/O相对应的字符流I/O。但是,为了保持兼容性,原先的类几乎没有改 动。再加之调试的需要,PrintStream类被保留,并且System类中的成员变量out、err仍作为它的对象。然而,PrintWriter用 于大多数输出比PrintStream更为合适。因此1.1版的API中建议新开发的代码使用PrintWriter类,并将 PrintStream类的两个构造函数标记为过时。这样,虽然使用System.out输出不会产生问题,在程序中创建新的PrintStream对象 时却会产生编译时的警告。 
  PrintWriter类与PrintStream类的方法是对应的。有一个不同之外需提请读者注意,就是当前者的自动清空缓冲区的功能被使能时(构 造函数中autoFlush置为true),仅当println()方法被调用时才自动清缓冲区,而不是像PrintStream一样遇到一个换行符就清 缓冲。

PrintStream,它可以将Java的基本资料型态等资料,直接转换为系统预设编码下对应的字元,再输出至OutputStream中,而这边要介 绍的 PrintWriter其功能上与PrintStream类似,除了接受OutputStream之外,它还可以接受Writer物件作为输出的对象,当 您原先是使用Writer物件在作处理 ,而现在想要套用println()之类的方法时,使用PrintWriter会是比较方便的作法。

下面这个程式显示了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();

}

}

}

控制台输出到txt的更多相关文章

  1. 自定义SpringBoot控制台输出的图案

    pringboot启动的时候,控制台输出的图案叫banner banner?啥玩意儿?相信有些人,一定是一脸懵逼... ——这个就不陌生了吧,这个是我们启动springboot的时候,控制台输出的.. ...

  2. c++日志输出库 spdlog 简介(3)多线程控制台输出日志

    spdlog源码分析:https://www.cnblogs.com/eskylin/p/6483199.html spdlog的异步模式使得spdLog可以支持多线程,于是写了一个多线程的小例子: ...

  3. Eclipse将控制台输出信息保存为文件

    当你在Eclipse中 running/debugging一个应用程序的时候,有关该应用程序的运行调试信息及日志信息都会输出到控制台(console )显示,但是Eclipse只会显示最后一部分的日志 ...

  4. Java代码工具箱之控制台输出重定向_控制台输出到文件

    1. 情形:有时候控制台输出太多,在MyEclipse显示不全. 2. 说明:本代码只会重定向 system.out 的内容, error及其它不受代码影响.其它应该类似. //自定导入必要库 //然 ...

  5. Python控制台输出时刷新当前行内容而不是输出新行

    需求目标 执行Python程序的时候在控制台输出内容的时候固定一刷新内容,如下: Downloading File FooFile.txt [%] 而不是 Downloading File FooFi ...

  6. Python 控制台输出时刷新当前行内容而不是输出新行

    需求目标 执行Python程序的时候在控制台输出内容的时候只显示一行,然后自动刷新内容,像这样: Downloading File FooFile.txt [%] 而不是这样: Downloading ...

  7. 转贴:修改springboot控制台输出的图案

    Post from:https://blog.csdn.net/WXN069/article/details/90667668 修改springboot控制台输出的图案1.在src\main\reso ...

  8. python将控制台输出保存到文件

    python将控制台输出保存到文件   在平时工作中,有时我们需要将控制台输出保存到文件 1.命令行用>覆盖写入和>>追加写入 for i in range(10000): prin ...

  9. js控制台输出console

    介绍: js的console你可以在firefox的firedbug或者ie和google的f12调试模式下看到,这些主流浏览器的调试模式的控制可以输出一些信息,你的一些js代码测试可以直接在cons ...

随机推荐

  1. EmEditor

    姓 名:ttrar.com 序 列 号:DKAZQ-R9TYP-5SM2A-9Z8KD-3E2RK 免费版地址:https://zh-cn.emeditor.com/#download

  2. 16_虚拟dom和dom diff算法

    虚拟dom的作用:是为了减少操作真实的dom 初始化显示界面的过程: 1.创建虚拟dom树——>真实dom树——>绘制页面显示 更新界面的过程: 2.绘制页面显示——>setStat ...

  3. Linux:写一个简单的服务器

    开始了新篇章:Linux网络编程. 基础知识: 套接字概念 Socket本身有"插座"的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型.本质为内核借助缓冲区形成的伪 ...

  4. 3:while、for 循环语句

    循环就是重复的做一件事情.python 中的循环语句有 while 和 for. while 循环 while 循环必须得有一个计数器,否则会变成一个死循环. # 例如这段代码,这段程序运行之后会一直 ...

  5. English Phrases with THE – Linking the TH Sound

    English Phrases with THE – Linking the TH Sound Share Tweet Share Tagged With: The Word THE Study En ...

  6. Haskell语言学习笔记(89)Unicode UTF8

    unicode-show $ cabal install unicode-show Installed unicode-show-0.1.0.2 Prelude> :m +Text.Show.U ...

  7. Haskell语言开发工具

    Stack How to Script with Stack Originate Guides - Haskell Tool Stack 配置 Intellij Idea IntelliJ plugi ...

  8. 8张思维导图学习javascript

    分别归类为: javascript变量 javascript运算符 javascript数组 javascript流程语句 javascript字符串函数 javascript函数基础 javascr ...

  9. LeetCode OJ 77. Combinations

    题目 Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exa ...

  10. Structs复习 Path问题

    Path问题相对复杂 主要是路劲问题 但结论很简单 就是统一使用绝对路径 jar包 web.xml <?xml version="1.0" encoding="UT ...