标准I/O

在程序运行时,会默认为我们打开三个流:标准输入流、标准输出流、标准出错流。

  • 标准输入流一般对应我们的键盘
  • 标准输出流一般对应显示器
  • 标准出错流一般也对应显示器

1.标准输入流



  在标准I/O中,java提供了System.in,System.out,System.err分别对应标准输入、标准输出和标准出错。因为System.out与System.err都是PrintStream对象,所以直接可以使用,而System.in是一个未经任何修饰的InputStream,这表明我们在使用System.in时需要对其进行包装。

package com.dy.xidian;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Scanf {

    public static void main(String[] args) throws IOException {
        BufferedReader stdin = new BufferedReader(new InputStreamReader(
                System.in));
        String s;
        while ((s = stdin.readLine()) != null && !s.equals("n")) {
            System.out.println(s);
        }
    }
}

2.I/O重定向



重定向,顾名思义就是重新确定输出方向。比如System.out是将内容输出到显示屏上,但我们可以通过重定向让其将内容输出到一个文本文件中去。重定向操作的是字节流,而不是字符流。

package com.dy.xidian;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;

public class Redirecting {
    public static void main(String[] args) throws IOException {
        // 获取标准输出(控制台)
        PrintStream console = System.out;
        // 打开文件的输入流
        BufferedInputStream in = new BufferedInputStream(new FileInputStream(
                "E:/html/utf-8.php"));
        // 打开文件输出流
        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();
        // 重新定向到控制台
        System.setOut(console);
    }
}
时间: 2024-10-26 12:46:57

标准I/O的相关文章

标准文档流

标准流指的是在不使用其他的与排列和定位相关的特殊CSS规则时,各种元素的排列规则.HTML文档中的元素可以分为两大类:行内元素和块级元素.       1.行内元素不占据单独的空间,依附于块级元素,行内元素没有自己的区域.它同样是DOM树中的一个节点,在这一点上行内元素和块级元素是没有区别的.       2.块级元素总是以块的形式表现出来,并且跟同级的兄弟块依次竖直排列,左右自动伸展,直到包含它的元素的边界,在水平方向不能并排.盒子在标准流中的定位原则margin控制的是盒子与盒子之间的距离,

3.2 标准库类型string(上)

#include <string> #include <iostream> using std::string; using std::cin; using std::cout; using std::endl; //string定义在命名空间std中 int main() { /**************3.2.1 定义和初始化string*****************/ string s1; //默认初始化,S1是一个空字符串 string S2 = s1; //S2时S

陈松松:选择适合视频营销暴利产品的4大标准

本文作者:陈松松 每个视频,都是你的金牌业务员 这是我的第5篇视频营销原创文章 我知道你一定会大致看一下,但今天的文章一定要一字不落! 今天的这个分享有关最适合视频营销的暴利产品,是我很早就想分享的,只是没有合适的机会! 主题也比较简单,核心内容我总结为4点: 第一,人得逼,马得骑 第二,选择视频营销暴利产品的4大标准 第三,送你1款最暴利的是视频营销产品 第四,商业的本质就是信息不对称 第五,给你2个选择暴利产品的平台做参考 我先来分享第一点, 第一,人得逼,马得骑 写文章真的是越来越有感觉了

JavaScript标准参考教材(alpha)--笔记

一.导论 二.基本语法 1.严格来说var a=1与a=1效果不太一样,delete命令无法删除前者. JavaScirpt是一种动态类型语言,也就是说,变量的类型没有限制,可以赋予各种类型的值. JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行.中文是合法的标识符,可以用作变量名. switch语句后面的表达式与case语句后面的表示式,在比较运行结果时,采用的是严格相等运算符(===).swidth结构不利于代码重用,往往可以用对象形式重写. do

Obstack是C标准库里面对内存管理的GNU扩展

Obstack介绍 Obstack初始化 在Obstack中申请对象 释放对象 申请growing object 获取Obstack状态 数据对齐 以下是来自wiki对obstack的介绍: Obstack是C标准库里面对内存管理的GNU扩展(实际上就是GNU C library了).Obstack===Object stack.没错,Obstack就是一个栈,栈里面的元素是对象object(不是面向对象的对象哦,这里的对象单指数据元素).这些数据是动态的,也就是使用的是动态内存.这种内存管理技

标准的I/O和管道使用方法

标准的I/O和管道 程序:指令+数据 系统自带了许多二进制程序,这些二进制程序共有两部分组成,一部分是指令,一部分是数据. 指令就是指二进制程序中的内容,然而程序的运行,也需要数据来支撑. 标准输出  STDOUT  -1   standard  output 输入命令所呈现在屏幕上的内容称之为标准输出,但是不是所有的命令都有标准输出.例如cd  rm后面不跟参数时,就没有标准输出. 标准输出的默认设备就是当前终端窗口. 标准错误  STDERR  -2  standard  error 当命令

取证分析标准作业程序???

最近有人问我ISO 27037是什么?其实它就是有关电子证据处理的标准,但其实别被它的长篇大论给吓着了.若你有仔细看一下,它也只提到了”前段”的作业.也就是说,它提到了电子证据的搜集,保存,撷取,运送,但后面真正至为关键的分析程序,它就不提了.为何呢,因为太复杂之故. 很多单位很喜欢挂在嘴边的就是”遵循标准作业程序SOP”,听来多么专业啊~是的,乍听之下是有这么一回事.但内行人皆知,所谓SOP的主要精神及用意便是”防呆”,”防止手残”,等于为了让即便不是那么清楚为何如此执行的人,也能照表操课.但

【翻译自mos文章】将Oracle 12c数据库从标准版convert到企业版

将Oracle 12c数据库从标准版convert到企业版 来源于: How to Convert Oracle Database 12c from Standard to Enterprise Edition ? (文档 ID 2046103.1) APPLIES TO: Oracle Database - Enterprise Edition - Version 12.1.0.1 and later Information in this document applies to any pl

标准sql语句,学习

标准SQL语句总结标准SQL语句总结,标准SQL语言基本上适用于下面所列出的数据库软件 ----------------------------------------------------------------------------- 数据库软件清单 A商业数据库软件如下 1.微软的MS SQL Server和Access 2.IBM的DB2,informax 3.Sybase的大型数据库ASE,中小型数据库ASA 4.甲骨文公司的Oracle8.0,oracle9i系列 5.Borla

“TI门外汉”网路知识笔记十一 访问控制列表ACL(1标准访问列表)

访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制端口进出的数据包.ACL适用于所有的被路由协议,如IP.IPX.AppleTalk等. ACL的作用: ACL可以限制网络流量.提高网络性能. ACL提供对通信流量的控制手段. ACL是提供网络安全访问的基本手段. ACL可以在路由器端口处决定哪种类型的通信流量被转发或被阻塞. 3P 原则: 在路由器上应用 ACL 的一般规则.您可以为每种协议 (per protocol).每个方向 (per