java 1.1在System类中添加了特殊的方法,允许我们重新定向标准输入、输出以及错误IO流。此时要用到下述简单的静态方法调用:

setIn(InputStream)

setOut(PrintStream)

setErr(PrintStream)

如果突然要在屏幕上生成大量输出,而且滚动的速度快于人们的阅读速度,输出的重定向就显得特别有用。在一个命令行程序中,如果想重复测试一个特定的用户输入序列,输入的重定向也显得特别有价值。下面这个简单的例子展示了这些方法的使用:

//: Redirecting.java

// Demonstrates the use of redirection for

// standard IO in Java 1.1

import java.io.*;

class Redirecting {

public static void main(String[] args) {

try {

BufferedInputStream in =

new BufferedInputStream(

new FileInputStream(

"Redirecting.java"));

// Produces deprecation message:

PrintStream out =

new PrintStream(

new BufferedOutputStream(

new FileOutputStream("test.out")));

System.setIn(in);

System.setOut(out);

System.setErr(out);

BufferedReader br =

new BufferedReader(

new InputStreamReader(System.in));

String s;

while((s = br.readLine()) != null)

System.out.println(s);

out.close(); // Remember this!

} catch(IOException e) {

e.printStackTrace();

}

}

} ///:~

这个程序的作用是将标准输入同一个文件连接起来,并将标准输出和错误重定向至另一个文件。

这是不可避免会遇到“反对”消息的另一个例子。用-deprecation标志编译时得到的消息如下:

Note:The constructor java.io.PrintStream(java.io.OutputStream) has been deprecated.

注意:不推荐使用构建器java.io.PrintStream(java.io.OutputStream)。

然而,无论System.setOut()还是System.setErr()都要求用一个PrintStream作为参数使用,所以必须调用PrintStream构建器。所以大家可能会觉得奇怪,既然Java 1.1通过反对构建器而反对了整个PrintStream,为什么库的设计人员在添加这个反对的同时,依然为System添加了新方法,且指明要求用PrintStream,而不是用PrintWriter呢?毕竟,后者是一个崭新和首选的替换措施呀?这真令人费解。

java io重定向,java中的标准重定向标准IO_java标准IO_java构建器_课课家相关推荐

  1. java io ioexception,java.io.IOException

    catch(java.io.IOException e){ ECLIPSE下LWUIT问题啊??java.lang.ClassNotFoundException'>java.lang.Class ...

  2. Java IO篇 Java IO编程

    Java IO 一.java io 概述 1.1 相关概念 二.Java IO类库的框架 2.1 Java IO的类型 2.2 IO 类库 三.Java IO的基本用法 3.1 Java IO :字节 ...

  3. java遍历文件和归类_java读取文件的两种方法:java.io和java.lang.ClassLoader

    java读取文件的两种方法:java.io和java.lang.ClassLoader 什么时候使用java.io,什么时候使用java.lang.ClassLoader呢? (注:要是之前读xml文 ...

  4. Sqoop进行导入数据到Hive时报错:ERRORtool.ImportTool:Importfailed:java.io.IOException:java.lang.ClassNotFoundExc

    项目场景: 使用版本:Sqoop1.4.7.hive3.1.2 问题描述 在使用Sqoop进行MySQL数据导入到Hive的过程中出现一下错误提示.ERRORtool.ImportTool:Impor ...

  5. java.lang.Exception: java.io.IOException: java.lang.ClassNotFoundException: user_log

    java.lang.Exception: java.io.IOException: java.lang.ClassNotFoundException: user_log java.lang.Excep ...

  6. hive命令出现问题Failed with exception Java.io.IOException:java.lang.IllegalArgumentException: java.NET.URI

    转载自  hive命令出现问题Failed with exception Java.io.IOException:java.lang.IllegalArgumentException: java.NE ...

  7. 解决Caused by: java.io.IOException: java.io.IOException: error=12, Cannot allocate memory

    最近公司一台线上服务器的hbase的regionserver挂掉之后起不起来报错OOM. 这台机器同时装有cassandra,于是停掉cassandra释放内存,重启regionserver失败,同时 ...

  8. 启动nacos-server报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null

    问题描述 运行nacos文件的startup.cmd启动nacos-server时报错:java.io.IOException: java.lang.IllegalArgumentException: ...

  9. java httpclient 重定向_httpclient 中post请求重定向

    背景:使用httpclient 的post请求进行登录,需要重定向登录,请求重定向后的地址 在httpclient中post请求不像get请求自己可以重定向,实现方式是 判断post请求返回码是否是3 ...

最新文章

  1. tensorflow-gpu
  2. 读书:历史 -- 奥斯曼帝国六百年
  3. linux系统调用 ftruncate设置文件大小
  4. debian下编译安装poco
  5. json字符串与对象互相转换
  6. PHP第五周答案,算法设计与分析第五周作业——Word Ladder
  7. DELPHI实现游戏内存的修改
  8. 用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变
  9. 发布服务器 bugzilla, streber 数据库备份方案
  10. 初识python多线程
  11. linux 每天_每天使用Linux的11种惊人方式
  12. 苹果M1芯片:如何开启一个时代
  13. C#调用java类、jar包方法
  14. python isodd()判断奇偶_EXCEL VBA:Iseven Isodd 判断奇偶
  15. javascript css函数一设置/读取对象的属性(Style对象与CurrentStyle对象、getComputedStyle)及其小案例
  16. 第四方支付平台程序源码_云计费系统源码
  17. C++学习(四九二)cmake file的GLOB和GLOB_RECURSE
  18. Win10-C盘清理方法全攻略(从剩余9G到剩49G)
  19. 【obs-studio开源项目从入门到放弃】obs-studio项目简介和架构
  20. win11(amd)+cuda+cudnn+pytorch安装过程

热门文章

  1. 腾讯云推出首款自研服务器星星海;苹果新款Mac Pro整套配齐超30万;Fedora 31稳定版发布|极客头条...
  2. 顶级开发人员最容易轻视的五大重要技能!
  3. 频遭黑客攻击的物联网,这里有妙招!
  4. 意大利不禁止华为;13 款 5G 手机时间表公布;亚马逊 CEO 遭威胁 | 极客头条
  5. Python 的低性能问题是无法忽视的
  6. socket编程之 connect()函数
  7. java中子类与父类强制转换_java中父类强制转换成子类的错觉
  8. Kafka必须掌握的核心技术:Java基础入门期末考试
  9. pyspark.sql写入mysql_将pyspark dataframe写入MySQL数据库时出错
  10. pythonnumpy详解_Python精讲Numpy基础,大牛笔记详细解释