Java IO: System.in, System.out, System.err

转载自  Java IO: System.in, System.out, System.err

译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

System.in, System.out, System.err这3个流同样是常见的数据来源和数据流目的地。使用最多的可能是在控制台程序里利用System.out将输出打印到控制台上。

JVM启动的时候通过Java运行时初始化这3个流,所以你不需要初始化它们(尽管你可以在运行时替换掉它们)。

System.in

System.in是一个典型的连接控制台程序和键盘输入的InputStream流。通常当数据通过命令行参数或者配置文件传递给命令行Java程序的时候,System.in并不是很常用。图形界面程序通过界面传递参数给程序,这是一块单独的Java IO输入机制。

System.out

System.out是一个PrintStream流。System.out一般会把你写到其中的数据输出到控制台上。System.out通常仅用在类似命令行工具的控制台程序上。System.out也经常用于打印程序的调试信息(尽管它可能并不是获取程序调试信息的最佳方式)。

System.err

System.err是一个PrintStream流。System.err与System.out的运行方式类似,但它更多的是用于打印错误文本。一些类似Eclipse的程序,为了让错误信息更加显眼,会将错误信息以红色文本的形式通过System.err输出到控制台上。

System.out和System.err的简单例子:

这是一个System.out和System.err结合使用的简单示例:

try {InputStream input = new FileInputStream("c:\\data\\...");System.out.println("File opened...");
} catch (IOException e) {System.err.println("File opening failed:");e.printStackTrace();
}

替换系统流

尽管System.in, System.out, System.err这3个流是java.lang.System类中的静态成员(译者注:这3个变量均为final static常量),并且已经预先在JVM启动的时候初始化完成,你依然可以更改它们。只需要把一个新的InputStream设置给System.in或者一个新的OutputStream设置给System.out或者System.err,之后的数据都将会在新的流中进行读取、写入。

可以使用System.setIn(), System.setOut(), System.setErr()方法设置新的系统流(译者注:这三个方法均为静态方法,内部调用了本地native方法重新设置系统流)。例子如下:

OutputStream output = new FileOutputStream("c:\\data\\system.out.txt");
PrintStream printOut = new PrintStream(output);
System.setOut(printOut);

现在所有的System.out都将重定向到”c:\\data\\system.out.txt”文件中。请记住,务必在JVM关闭之前冲刷System.out(译者注:调用flush()),确保System.out把数据输出到了文件中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET应用迁移到.NET Core--调查案例

上周已经发过三篇文章讲述做.NET 应用迁移到.NET Core的一般方法,具体内容请看: .NET应用迁移到.NET Core(一) .NET应用迁移到.NET Core(二)风险评估 .NET应用迁移到.NET Core(三)从…

Mybatis+mysql动态分页查询数据案例——房屋信息的接口(IHouseDao)

package cn.bdqn.mhouse.dao;import java.util.List;import cn.bdqn.mhouse.entity.House; import cn.bdqn.mhouse.entity.HouseCondition; import cn.bdqn.mhouse.util.Page; /*** * * 项目名称:mhouse * 类名称:IHouseDao * 类描述&#xf…

php curl post 超时设置,在PHP中设置curl的超时参数(timeout)

如下:我通过php在一个已经建好的数据库上发起curl请求.这个数据库非常庞大,因此它始终需要很长时间返回XML响应.为了解决这个问题,我准备了一个应该有长超时时间的curl请求.$ch curl_init();$headers["Content-Length"] strlen($postString);$headers["User-A…

Java IO: 流

转载自 Java IO: 流原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) Java IO流是既可以从中读取,也可以写入到其中的数据流。正如这个系列教程之前提到过的,流通常会与数据源、数据流向目的地相关联,比如文件、网络等等。 …

Ajax前后端对接---Springmvc

Springmvc实现 实体类user Data AllArgsConstructor NoArgsConstructor public class User {private String name;private int age;private String sex;}我们来获取一个集合对象&#xff0c;展示到前端页面 RequestMapping("/a2") public List<User> ajax2(…

缓存在大型网站架构中的应用

缓存的基本知识 在整个计算机体系构造中&#xff08;无论是硬件层面还是软件层面&#xff09;&#xff0c;缓存都是无处不在的。 在计算机硬件构造中&#xff0c;由于两种介质的速度不匹配&#xff0c;高速介质在和低速介质交互时速度趋向低速方&#xff0c;这就导致了高速介质…

php 错误提示开启,php开启与关闭错误提示,php开启错误提示_PHP教程

php开启与关闭错误提示&#xff0c;php开启错误提示windows系统开关php错误提示如果不具备修改php.ini的权限&#xff0c;可以将如下代码加入php文件中&#xff1a;代码如下 复制代码ini_set(“display_errors”, “On”);error_reporting(E_ALL | E_STRICT);当然&#xff0c;如…

Java IO: Reader And Writer

转载自 Java IO: Reader And Writer译文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com) Java IO的Reader和Writer除了基于字符之外&#xff0c;其他方面都与InputStream和OutputStream非常类似。他们被用于读写文本。InputStream和OutputStream是基于字节的&am…

win10安装dockerx docker的常见命令 可以子腾讯云上做做练习

参考资料 https://www.jianshu.com/p/e8427d12b3e0 百度搜索 docker hub 可以查找 你需要的镜像 https://hub.docker.com/?utm_sourcegetting_started_guide&utm_mediumembedded_Windows&utm_campaignfind_whalesay https://blog.csdn.net/zzq060143/article/de…

韩文博 php,No releases available for package pear.php.net/HTTP_Upload

卸载了PHP的HTTP_Upload>pear uninstall HTTP_Uploaduninstall ok: channel://pear.php.net/HTTP_Upload-0.9.1但重新安装时&#xff0c;出错>pear install HTTP_UploadNo releases available for package "pear.php.net/HTTP_Upload"install failed执行pear c…

Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持

Jexus 是一款运行于 Linux 平台&#xff0c;以支持 ASP.NET、PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器。最新版 5.8.2 已经发布&#xff0c;有如下更新&#xff1a; 1&#xff0c;现在大部分网站已经部署HTTPS&#xff0c;大家对于安全越来越重视&…

拦截器中/* vs /** ------SpringMVC

<!--关于拦截器的配置--> <mvc:interceptors><mvc:interceptor><!--/** 包括路径及其子路径--><!--/admin/* 拦截的是/admin/add等等这种 , /admin/add/user不会被拦截--><!--/admin/** 拦截的是/admin/下的所有--><mvc:mapping path&q…

php移动代码,移动专区周级收录如何提交 复制这段php代码即可

今天我们来讲解下“移动专区的周级提交”很多朋友都在使用移动专区(之前的熊掌号)进行提交&#xff0c;但是天级提交只给10个额度&#xff0c;需要我们不断提交10个才会有所增长&#xff0c;但是我们可以使用“周级提交”可以直接享受5万的数据提交&#xff0c;对于我们站点的收…

Java IO: 异常处理

转载自 Java IO: 异常处理译文链接 作者&#xff1a;Jakob Jenkov 译者&#xff1a; 李璟(jlee381344197gmail.com) 流与Reader和Writer在结束使用的时候&#xff0c;需要正确地关闭它们。通过调用close()方法可以达到这一点。不过这需要一些思考。请看下边的代码&#xff1a…

钟 docker讲解

任意目录打开git bash AdministratorPC-201908221240 MINGW64 ~/Desktop/开发工具$ ssh root10.23.12.67 连接服务器 The authenticity of host 10.23.12.67 (10.23.12.67) cant be established. ECDSA key fingerprint is SHA256:q//66ce/mAHBGMTzqoOuHyW4h2m3ywE6BQevsNXv…

拦截器---SpringMVC(权限拦截)

拦截器 概述 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。 **过滤器与拦截器的区别&#xff1a;**拦截器是AOP思想的具体应用。 过滤器 servlet规范中的一部分&#xff0c;任…

搭建高可用的rabbitmq集群 + Mirror Queue + 使用C#驱动连接

我们知道rabbitmq是一个专业的MQ产品&#xff0c;而且它也是一个严格遵守AMQP协议的玩意&#xff0c;但是要想骚&#xff0c;一定需要拿出高可用的东西出来&#xff0c;这不本篇就跟大家说 一下cluster的概念&#xff0c;rabbitmq是erlang写的一个成品&#xff0c;所以知道如何…

Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace"houseDao" ><result…

JS Promise的实现原理

转载自 JS Promise的实现原理在前端开发过程中&#xff0c;会经常使用到 Promise 模式&#xff0c;可以使异步代码看起来如同步般清新易读&#xff0c;从而从回调地狱中解脱出来。ES6中 已原生支持 Promise&#xff0c;但在未支持的浏览器中还需要通过 polyfill 模拟实现。下…