Java 输入/输出——重定向标准输入/输出
在System类中提供了如下三个重定向标准输入/输出方法。
static void |
setErr(PrintStream err) |
Reassigns the "standard" error output stream.(重定向“标准”错误输出流)
|
|---|---|---|
static void |
setIn(InputStream in) |
Reassigns the "standard" input stream.(重定向“标准”输入流)
|
static void |
setOut(PrintStream out) |
Reassigns the "standard" output stream.(重定向“标准”输出流)
|
static void |
setProperties(Properties props) |
Sets the system properties to the
Properties argument. |
static String |
setProperty(String key,String value) |
Sets the system property indicated by the specified key.
|
static void |
setSecurityManager(SecurityManager s) |
Sets the System security.
|
下面程序通过重定向标准输出流,将System.out的输出重定向到文件输出,而不是在屏幕上输出。
首先回顾PrintStream的构造器:
| Constructor | Description |
|---|---|
PrintStream(File file) |
Creates a new print stream, without automatic line flushing, with the specified file.
|
PrintStream(File file, String csn) |
Creates a new print stream, without automatic line flushing, with the specified file and charset.
|
PrintStream(OutputStream out) |
Creates a new print stream.
|
PrintStream(OutputStream out, boolean autoFlush) |
Creates a new print stream.
|
PrintStream(OutputStream out, boolean autoFlush,String encoding) |
Creates a new print stream.
|
PrintStream(String fileName) |
Creates a new print stream, without automatic line flushing, with the specified file name.
|
PrintStream(String fileName, String csn) |
Creates a new print stream, without automatic line flushing, with the specified file name and charset.
|
package com.zyjhandsome.io;
import java.io.*;
public class RedirectOut {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
PrintStream ps = new PrintStream(new FileOutputStream("D:\\User_zhaoyingjun\\JavaSE\\Test\\RedirectOut.log"));
// 将标准的输出重定向到ps输出流
System.setOut(ps);
// 向标准输出输出一个字符串
System.out.println("普通字符串");
// 向标准输出输出一个对象
System.out.println(new RedirectOut());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
在“Redirect.log”文件中输出结果:
普通字符串
com.zyjhandsome.io.RedirectOut@71be98f5
下面程序重定向标准输入流,从而可以将System.in重定向到指定文件,而不是键盘输入。
package com.zyjhandsome.io; import java.io.*;
import java.util.*; public class RedirectIn { public static void main(String[] args) {
// TODO Auto-generated method stub
try {
FileInputStream fis = new FileInputStream("D:\\User_zhaoyingjun\\JavaSE\\Java_Eclipse_Workspace\\HelloWorld2\\src\\com\\zyjhandsome\\io\\RedirectIn.java");
// 将标准输入流 重定向到fis输入流
System.setIn(fis);
// 使用System.in创建Scanner对象,用于获取标准输入
Scanner sc = new Scanner(System.in);
// 增加下面一行只把回车作为分隔符
sc.useDelimiter("\n");
// 判读是否还有下一个输入项
while (sc.hasNext())
{
// 输出输入项
System.out.println("键盘输入的内容是:" + sc.next());
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出结果:
键盘输入的内容是:package com.zyjhandsome.io;
键盘输入的内容是:
键盘输入的内容是:import java.io.*;
键盘输入的内容是:import java.util.*;
键盘输入的内容是:
键盘输入的内容是:public class RedirectIn {
键盘输入的内容是:
键盘输入的内容是: public static void main(String[] args) {
键盘输入的内容是: // TODO Auto-generated method stub
键盘输入的内容是: try {
键盘输入的内容是: FileInputStream fis = new FileInputStream("D:\\User_zhaoyingjun\\JavaSE\\Java_Eclipse_Workspace\\HelloWorld2\\src\\com\\zyjhandsome\\io\\RedirectIn.java");
键盘输入的内容是: // 将标准输入流 重定向到fis输入流
键盘输入的内容是: System.setIn(fis);
键盘输入的内容是: // 使用System.in创建Scanner对象,用于获取标准输入
键盘输入的内容是: Scanner sc = new Scanner(System.in);
键盘输入的内容是: // 增加下面一行只把回车作为分隔符
键盘输入的内容是: sc.useDelimiter("\n");
键盘输入的内容是: // 判读是否还有下一个输入项
键盘输入的内容是: while (sc.hasNext())
键盘输入的内容是: {
键盘输入的内容是: // 输出输入项
键盘输入的内容是: System.out.println("键盘输入的内容是:" + sc.next());
键盘输入的内容是: }
键盘输入的内容是: } catch (FileNotFoundException e) {
键盘输入的内容是: // TODO Auto-generated catch block
键盘输入的内容是: e.printStackTrace();
键盘输入的内容是: }
键盘输入的内容是: }
键盘输入的内容是:}
上面程序创建了一个FileInputStream输入流,并使用System的setIn()方法将系统标准输入重定向到该文件输入流。运行上面程序,程序不会等待用户输入,而是直接输出了RedirectIn.java文件的内容,这表明程序不再使用键盘作为标准输入,而是使用RedirectIn.java文件作为标准输入源。
Java 输入/输出——重定向标准输入/输出的更多相关文章
- Java重定向标准输入/输出
在System类中提供了三个重定向标准输入/输出的方法static void setErr(PrintStream err) 重定向“标准”错误输出流static void setIn(InputSt ...
- Linux学习笔记(十)shell基础:历史命令、命令补全、输出重定向、输出重定向
一.历史命令 history [选项] [历史命令保存文件] -c 清空历史命令 -w 吧缓存中的历史命令写入历史命令保存文件~/.bash_history中 系统会默认将上次注销登录(正确退出)之前 ...
- [java]输入一个算术表达式输出结果
动手有益. 输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形.例如: 输入:3+8×2/9-2 输出:2 /** * input a calculate stri ...
- java输入一个字符串,输出该字符串的所有的排序
public class Sort { public static void arrangeSequence(char[] strArr,int i){ char temp; ArrayList< ...
- java输出重定向
Java的标准输入,输出分别是通过System.in和System.out来代表.默认情况下他们分别代表键盘和显示器. System类里提供了3个重定向标准输入,输出的方法. static void ...
- java SE :标准输入/输出
一 标准设备输入/输出 A 标准输入/输出类 System B 控制台读写类 Console 标准输入/输出类 System 1 标准输入.标准输出.错误输出流 // 标准输入流 public f ...
- Linux Shell基础 Shell的输入重定向和输出重定向
概述 在 Linux 中输入设备指的是键盘,输出设备指的是显示器.在 Linux 中,所有的内容都是文件,计算机硬件也是文件,标准输入设备(键盘)和标准输出设备(显示器)也是文件.这些设备的设备文件名 ...
- Shell(六):输入/输出重定向
重定向的作用是将命令的执行结果输出到指定的文件中. 重定向命令列表如下: 文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR). 1.输出重 ...
- linux 输出重定向
输出重定向 标准输入 文件描述符:0 设备:键盘 设备文件名:/dev/stdin 标准输出 文件描述符:1 设备:显示器 设备文件名:/dev/sdtout 标准输出重定向 命令 >> ...
随机推荐
- 2D空间中求线段与圆的交点
出处: https://answers.unity.com/questions/366802/get-intersection-of-a-line-and-a-circle.html 测试脚本(返回值 ...
- 译:7.使用Spring MVC服务Web内容
本指南向您介绍了使用Spring创建“hello world”网站的过程.阅读原文:Serving Web Content with Spring MVC 1. 你将会构建什么? 您将构建一个具有静态 ...
- 物联网架构成长之路(16)-SpringCloud从入门到吹水
1.前言 Spring Cloud 现在比较流行,版本更新也是蛮快的,网上资料也是很多.很多参考网上资料就可以学到了.这里给个 http://blog.csdn.net/forezp/article/ ...
- 从一道面试题来认识java类加载时机与过程【转】
说明:本文的内容是看了<深入理解Java虚拟机:JVM高级特性与最佳实践>后为加印象和理解,便记录了重要的内容. 1 开门见山 以前曾经看到过一个java的面试题,当时觉得此题很简单,可 ...
- Java多线程系列——过期的suspend()挂起、resume()继续执行线程
简述 这两个操作就好比播放器的暂停和恢复. 但这两个 API 是过期的,也就是不建议使用的. 不推荐使用 suspend() 去挂起线程的原因,是因为 suspend() 在导致线程暂停的同时,并不会 ...
- Sass编译时Invalid US-ASCII character解决办法
编译scss文件时,如果出现如下错误 Error: Invalid US-ASCII character "\xC2" on line 63 of src/assets/_scss ...
- MYSQL + MHA +keepalive + VIP安装配置(三)--keepalived安装配置
一.概述 keepalived介绍:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除 ...
- 错误代码CS0051可访问性不一致_解决方案
一.问题的出现 用C#在写多线程时报错 二.解决方案 1,分析思路 本来对BaseStruct设置为私有访问,但调用时又想公开化,从而造成了编译错误. 2,解决 将红色部分改为公有 3,总结 注意pu ...
- Schema中elementFormDefault="qualified"所起的作用
有的xsd文件的开头是这样写的: <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.or ...
- C#操作Word Aspose.Words组件介绍及使用—基本介绍与DOM概述
1.基本介绍 Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务.Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XP ...