`

java中OutputStream和PrintWriter同时使用的问题。。。。

    博客分类:
  • Java
阅读更多

之前遇到的一个问题,现在记录下来~

 

import java.io.*; 
  
class IODemo09 
{ 
    public static void main(String args[]) throws Exception 
    { 
        OutputStream out1 = null; 
  
        out1 = System.out; 
        out1.write(new String("hello buaa!").getBytes()); 
        out1.close(); 
                  /* 不能同时使用??? 
        PrintWriter out2 = new PrintWriter(System.out); 
        out2.println("hello buaa!"); 
        out2.close(); 
             */ 
    } 
} 

 

 

问:现在out1可以向屏幕输出,但取消注释后,out2不能向屏幕输出,如果只注释掉out1,则out2可以向屏幕输出。请问高手,这是为什么呢?

问题补充:
注释掉第11行是可以了,为什么注释掉就可以了呢? 这两个流有什么关系么?

答:PrintWriter是以System.out为底层流(不是底层writer)。
啊,或许你没有留意到:out1 = System.out是让out1与System.out指向了同一个流,也就是标准输出流;这个赋值并没有创建新的流,只是增添了一个指向标准输出流的引用而已。out1.close()就等同于System.out.close()。

因为你把System.out给关掉了,然后又把System.out作为参数创建了一个新的PrintWriter实例……后者只是将System.out作为底层writer,对这个底层做了个包装而已。现在你把底层先关掉了,后面自然什么也输出不了。你可以试试在不注释掉第11行的情况下在后面写个System.out.println("test");,照样是什么也没有——标准输出流也就是个普通的流而已,你把它关了它就没了 =v=

 

分享到:
评论

相关推荐

    廖雪峰 Java 教程.doc

    PrintStream和PrintWriter 日期与时间 基本概念 Date和Calendar LocalDateTime ZonedDateTime DateTimeFormatter Instant 最佳实践 单元测试 编写JUnit测试 使用Fixture 异常测试 条件测试 参数化测试

    java项目超市

    import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; import login.Choice; import org.dom4j.DocumentException; public class ServerThread extends Thread{ private Socket ...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、FileInputStream、OutputStream...

    Java之IO流学习总结

    PrintWriter 和PrintStream 极其类似,功能和使用也非常相似。 OutputStreamWriter 是OutputStream 到Writer 转换的桥梁,它的子类FileWriter 其实就是一个实现此功能的具体类(具体可以研究一SourceCode)。功能和...

    【Sansui】java各种流整理demo

    java各类IO流的整理demo,其内包含InputStream/OutputStream BufferedReader流 FileOutputStream/FileInputStream流 PrintWriter流 DataOut/DataIn流 Object流 FileChannel类;

    java编程基础,应用与实例

    第1章 什么是Java程序设计语言 1 1.1 Java语言诞生背景 1 1.2 Java语言的特点 1 1.2.1 可移植性(universality) 1 1.2.2 安全性(security) 1 1.2.3 Java Virtual Machine(JVM) 2 1.2.4 面向对象的程序...

    java流实现文件拷贝

    今天复习了一下java流的知识,做了个小例子,实现文件的拷贝。(中文和空格都能很好的读取)(PrintWriter\OutputStreamWriter\FileOutputStream)

    java自学之道

    9.2 final使用注意事项 三、继承 1、继承的概念 1.1 继承的定义 1.2 继承举例 1.3 父类和子类 类继承 2.1 方法继承 2.2 方法覆盖 2.3 方法重载 3、多态与动态绑定 3.1 多态分为两种 3.2 调用一个对象方法的机制 ...

    JDK_API_1_6

    ObjectOutputStream ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。 ObjectOutputStream.PutField 提供对要写入 ObjectOutput 的持久字段的编程访问。 ObjectStreamClass 类的序列化...

    多线程Java Socket编程

    采用Java 5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送请求.  1.服务端 ...  import java.io.OutputStream;  import java.io.PrintWriter;  import j

    java经典面试2010集锦100题(不看你后悔)

    B) 在Java中布尔类型不能和数字之间不能来回转换,即false和true不对应任何零或非零的值。 C) 双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但float类型具有速度快、占用内存小的优点。 D) 在...

    java io 类 小结 代码

    代码直接使用 InputStream OutputStream Reader Writer FileInputStream FileOutputStream FileReader FileWriter InputStreamReader OutputStreamWriter BufferedReader BufferedWriter ...

    通过java操作excel表格的工具类库jxl

     WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的 java-doc中有详细列表,这里不再列出。  ②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格...

    PersonServlet

    在AEM中,我将使用实现Transformer和TransformerFactory接口的吊索重写器。 #解析器(我考虑过的事情) 我做了关于使用XML解析器库解析HTML的研究。 另一种选择是使用Xalan-Java通过将XML文档转换为HTML并将其提供...

    lab-2-Alex-PtGa:GitHub Classroom创建的lab-2-Alex-PtGa

    2号实验室工作 在“ DEV-J120。Java SE。Standard软件包”课程中 研究课题 例外情况: 引起特殊情况; 异常处理; 使用标准排除项。...OutputStream类。...PrintWriter类。...本实验是Java编程语言中的模

    android post请求接口demo

    import java.io.OutputStream; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; import android.content.Intent; import and

    Excel数据操纵-jar包-jxl.jar

    WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。 ②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化...

    跟汤老师学Java(第15季):I/O输入输出流

    本课程从零开始,以通俗易懂的方式讲解Java技术,手把手教你掌握每一个知识点。 真正做到零基础入门学习,适合初学者的教程! 课程内容包括: 1.File类 2.IO流简介 3.流的分类  输入流、输出流  字节流、字符...

    Thinking in Java 4th Edition

    Java SE5 and SE6 .................. 2 Java SE6 ......................................... 2 The 4th edition........................ 2 Changes .......................................... 3 Note on the ...

Global site tag (gtag.js) - Google Analytics