真·浅谈System.setOut()
java中我们熟悉的输出System.out.println()只能将数据输出到控制台上,那么我们像要将数据输出到背的地方时该怎么办?
System.setOut()来了。
System.out是 System 类中名为 out 的 static PrintStream 变量,这个变量包含 final 修饰符,因此可以直接为其赋予新值。而System 类包含了一个可以执行此操作的特殊方法:setOut(PrintStream stream)。
要使用System.setOut()之前,我们必须创建一个收集数据的对象ByteArrayOutputStream,来盛放我们要改变输出的内容。
这是一个特殊的类,它是一个动态(可调整大小的)数组,并实现 OutputStream 接口(可以近似的堪称数组和OutputStream之间的适配器)。
那么具体该怎么样操作呢?
如下:
import java.io.*;public class Solution {public static TestString testString = new TestString();public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String name = reader.readLine();FileOutputStream fox = new FileOutputStream(name);//创建特殊的变量保存当前的PrintStream;PrintStream consoleStream = System.out;//创建盛放数据的特殊类对象,即动态数组ByteArrayOutputStream outputStream = new ByteArrayOutputStream();//创建PrintStream类的适配器PrintStream stream = new PrintStream(outputStream);//将文件写入要输出的文件fox中System.setOut(new PrintStream(fox));//调用对之前更改一无所知的函数方法testString.printSomething();//将一切恢复原状System.setOut(consoleStream);reader.read();fox.flush();fox.close();}public static class TestString {public void printSomething() {System.out.println("这是要输出的文件内容");}}
}
真·浅谈System.setOut()相关推荐
- 浅谈 System.Data.DataRowCollection 类
我们来看看以下程序吧: 01: using System; 02: using System.Data; 03: using System.Linq; 04: 05: namespace Skyiv. ...
- 数位dp真·浅谈 By cellur925
预警:由于是从$Vergil$学长那里和$Mathison$大神那里学来的,所以清一色记忆化搜索!qwq 巨佬的数位dp讲解(未来的咕咕日报头条): https://www.luogu.org/blo ...
- python理解浮点数运算的误差_浅谈浮点数运算的误差
测试程序 我们知道,浮点数运算存在舍入误差.在某些特殊的情况下,舍入误差还可以累计到非常大的地步.让我们来看一下测试程序吧: 1 usingSystem;2 3 static classDecimal ...
- 浅谈 DDoS 攻击与防御
浅谈 DDoS 攻击与防御 原创: iMike 运维之美 什么是 DDoS DDoS 是英文 Distributed Denial of Service 的缩写,中文译作分布式拒绝服务.那什么又是拒 ...
- 浅谈“三层结构”原理与用意(转帖)
浅谈"三层结构"原理与用意 序 在刚刚步入"多层结构"Web应用程序开发的时候,我阅读过几篇关于"asp.net三层结构开发"的文章.但其多 ...
- 浅谈 Linux 高负载的系统化分析
简介: 浅谈 Linux 高负载的系统化分析,阿里云系统组工程师杨勇通过对线上各种问题的系统化分析. 讲解 Linux Load 高如何排查的话题属于老生常谈了,但多数文章只是聚焦了几个点,缺少整体排 ...
- 浅谈WEBGIS运用栅格地图实现原理[更新:Google Maps带来的新型WebGIS设计模式]
为什么要取这样的一个题目呢?主要是因为今天去了一家公司和他们谈了谈,本来是指望做兼职的,谈到最后当然是不成了.去谈的是地图制作(可兼职)一职,要求是地图制图经验,最后加了个有WEBGIS开发经验.本来 ...
- 浅谈软件开发方向之嵌入式
软件开发是当前一个很热门的话题,可是你知道软件开发岗位都有哪些吗?其中又有什么联系呢?本文以软件开发的嵌入式方向,来聊聊这个问题. Linux IO(基本输入/输出)系统架构图 如果说互联网系统像一个 ...
- 浅谈会话劫持原理及实践
<监视你的一举一动> ---浅谈会话劫持原理及实践 前言 通常,大家所说的入侵,都是针对一台主机,在获得管理员权限后,就很是得意:其实,真正的入侵是占领整个内部网络.针对内部网络的攻击方法 ...
最新文章
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
- Eclipse 集成gtk开发环境
- 《java程序员修炼之道》pdf书籍
- 信息学奥赛一本通 1084:幂的末尾 | OpenJudge NOI 小学奥数 7833
- ceph分布式存储简介
- numpy.reshape
- 阶段3 1.Mybatis_07.Mybatis的连接池及事务_1 今日课程内容介绍
- 蜂巢(已更名为网易云计算基础服务)计费系统架构升级之路
- 网页右侧悬浮QQ在线客服代码
- 计算机网络和物联网的区别与联系,3.5.2 从网络端系统接入的角度看互联网与物联网的区别与联系...
- JavaScript判断邮箱格式是否正确
- 支付宝企业转账到个人账号(php源码,亲测)
- 吉他“和弦”是什么?
- 机械专业中的计算机应用系统,计算机技术在机械制造领域的应用
- 使用C语言判断一个机器是大端机还是小端机
- sqlserver2012链接远程服务器,修复︰ 在 SQL Server 2012年链接服务器和远程服务器上的不同排序规则的数据更新时性能降低...
- LINUX shell 脚本
- (4.2.29) Android开发学习之基于ZBar实现微信扫一扫
- 计算机桌面字大怎么变小,电脑桌面图标文字大怎么变小
- python用循环结构求平均值_有python的输出问题;循环总数和平均值