之前遇到的一个问题,现在记录下来~
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=
分享到:
相关推荐
PrintStream和PrintWriter 日期与时间 基本概念 Date和Calendar LocalDateTime ZonedDateTime DateTimeFormatter Instant 最佳实践 单元测试 编写JUnit测试 使用Fixture 异常测试 条件测试 参数化测试
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 ...
FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、FileInputStream、OutputStream...
PrintWriter 和PrintStream 极其类似,功能和使用也非常相似。 OutputStreamWriter 是OutputStream 到Writer 转换的桥梁,它的子类FileWriter 其实就是一个实现此功能的具体类(具体可以研究一SourceCode)。功能和...
java各类IO流的整理demo,其内包含InputStream/OutputStream BufferedReader流 FileOutputStream/FileInputStream流 PrintWriter流 DataOut/DataIn流 Object流 FileChannel类;
第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流的知识,做了个小例子,实现文件的拷贝。(中文和空格都能很好的读取)(PrintWriter\OutputStreamWriter\FileOutputStream)
9.2 final使用注意事项 三、继承 1、继承的概念 1.1 继承的定义 1.2 继承举例 1.3 父类和子类 类继承 2.1 方法继承 2.2 方法覆盖 2.3 方法重载 3、多态与动态绑定 3.1 多态分为两种 3.2 调用一个对象方法的机制 ...
ObjectOutputStream ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。 ObjectOutputStream.PutField 提供对要写入 ObjectOutput 的持久字段的编程访问。 ObjectStreamClass 类的序列化...
采用Java 5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送请求. 1.服务端 ... import java.io.OutputStream; import java.io.PrintWriter; import j
B) 在Java中布尔类型不能和数字之间不能来回转换,即false和true不对应任何零或非零的值。 C) 双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但float类型具有速度快、占用内存小的优点。 D) 在...
代码直接使用 InputStream OutputStream Reader Writer FileInputStream FileOutputStream FileReader FileWriter InputStreamReader OutputStreamWriter BufferedReader BufferedWriter ...
WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的 java-doc中有详细列表,这里不再列出。 ②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格...
在AEM中,我将使用实现Transformer和TransformerFactory接口的吊索重写器。 #解析器(我考虑过的事情) 我做了关于使用XML解析器库解析HTML的研究。 另一种选择是使用Xalan-Java通过将XML文档转换为HTML并将其提供...
2号实验室工作 在“ DEV-J120。Java SE。Standard软件包”课程中 研究课题 例外情况: 引起特殊情况; 异常处理; 使用标准排除项。...OutputStream类。...PrintWriter类。...本实验是Java编程语言中的模
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
WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。 ②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化...
本课程从零开始,以通俗易懂的方式讲解Java技术,手把手教你掌握每一个知识点。 真正做到零基础入门学习,适合初学者的教程! 课程内容包括: 1.File类 2.IO流简介 3.流的分类 输入流、输出流 字节流、字符...
Java SE5 and SE6 .................. 2 Java SE6 ......................................... 2 The 4th edition........................ 2 Changes .......................................... 3 Note on the ...