精华内容
下载资源
问答
  • Java中标准输入输出流重定向
    千次阅读
    2014-12-10 23:57:37

    一、问题的引入:

    一般情况下,System.in代表的是键盘、System.out是代表的控制台(显示器)。当程序通过System.in来获取输入的时候,默认情况下,是从键盘读取输入;当程序试图通过System.out执行输出时,程序总是输出到显示器。如果我们想对这样的情况做一个改变,例如获取输入时,不是来自键盘,而是来自文件或其他的位置;输出的时候,不是输出到显示器上显示,而是输出到文件或其他位置,怎么实现?于是,java重定标准输入输出应运而生。

    二、java中提供了三个重定向方法:

    static void setErr(PrintStream err)、Static void setIn(InputStream in)、Static void setOut(PrintStream out)

    三、示例

    1、重定向标准输出

    package com.pb.io.reio;

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.PrintStream;
    /**
    * 重定向标准输出流
    * 1.初始化PrintStream对象
    * 2.调用System.setOut()方法,将标准输出流重定向到PrintStraem对象
    * 3.操作System.out流
    */
    public class ReOut {
    public static void main(String[] args) throws FileNotFoundException {
    //初始化一个PrintStream对象
    PrintStream ps = new PrintStream(new FileOutputStream("c:/myDoc/hello.txt"));
    //重定向标准输出流,重定向到上面指定的文件
    System.setOut(ps);
    //使用PrintStream对象向流中写信息
    System.out.print("测试一下,看重定向是否成功");
    System.out.println(new ReOut());
    //关闭流
    ps.close();
    }
    }

    2、重定向标准输入流

    package com.pb.io.reio;

    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    /**
    * 重定向标准输入流
    * 1.有一个已经初始化的输入流InputStream
    * 2.调用System.setIn()方法,将标准输入流重定向到目的输入流
    * 3.对System.in进行读取操作
    * @author ghp
    *
    */

    public class ReIn {
    public static void main(String[] args) throws IOException {
    //实例化FileinputStream对象
    FileInputStream fis = new FileInputStream("c:/myDoc/hello.txt");
    //重定向标准输入流
    System.setIn(fis);
    //读取System.in标准输入流中的内容
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    //输出System.in中的内容
    String line = null;
    System.out.println("==============开始读取标准输入流=============");
    while((line = br.readLine()) !=null){
    System.out.println(line);
    }
    //关闭流
    br.close();
    fis.close();
    System.out.println("=============读取输入流完毕============");
    }

    }

    更多相关内容
  • 实验八 输入输出流()

    千次阅读 多人点赞 2018-05-17 11:15:48
    内容1:标准输入输出流重定向 (1) 新建一个工程demo1,设计一个类Time,成员变量为时(h)、分(m)、秒(s)。 (2) 分别为类Time重载提取运算符(>>)和插入运算符(>>)。 a. 输入格式:14 ...

    内容1:标准输入输出流重定向
    (1) 新建一个工程demo1,设计一个类Time,成员变量为时(h)、分(m)、秒(s)。
    (2) 分别为类Time重载提取运算符(>>)和插入运算符(>>)。
    a. 输入格式:14 30 15 (三个整数,分别表示时、分、秒)
    b. 输出格式:14.5042 (一个定点小数,要求保留4位小数)
    (3) 运行程序,输入一个时间,输出该时间对应的小数,如下图所示
    (4) 新建输入文件D:\in.txt,在文件中输入一个时间,如下图
    打开命令提示符,进入到程序所在的路径,输入如下命令运行程序:
    打开输出文件D:\out.txt,查看其内容,如下图:
    注意:要求提示语句不能出现在输出文件中,只能出现在屏幕上。
    附代码
    !!!编译环境 DevC++ 5.11 TDM-GCC 4.9.2 64-Bit Release
    头文件 iquery.h

    #ifndef  _IQUERY_H
    #define _IQUERY_H 1
    	using namespace std;
    	class Time{
    		public:
    			friend ostream &operator<<(ostream &,const Time&);  
        		friend istream &operator>>(istream &,Time&);  
    //    		friend fstream &operator<<(fstream &,const Time&);  
    //    		friend fstream &operator>>(fstream &,Time&); 
    		private:
    			double hour;
    			double minute;
    			double second;
    			double xiaoshu; 	
    	}; 
    #endif
    

    头文件实现文件 iquery,cpp

    #include <iostream>
    #include "string"
    #include "iquery.h"
    #include "iomanip"
    #include "cmath" 
    using namespace std; 
    
    ostream &operator<<(ostream &output,const Time& time)  
    {  
      
    	if(time.hour>24||time.minute>60||time.second>60){
    		clog<<"输入格式错误:"<<endl<<"请关闭程序并检查输入的时间" ;
    	}
    	else{
    		output<<"输出该时间对应的小数:";
    		output<<setw(6)<<time.hour+time.minute/60+time.second/3600;
    	}
        return output;  
    }  
    
    //fstream &operator<<(fstream &output,const Time& time)  
    //{  
    //  
    //	if(time.hour>24||time.minute>60||time.second>60){
    //		clog<<"输入格式错误:"<<endl<<"请关闭程序并检查输入的时间" ;
    //	}
    //	else{
    //		output<<"输出该时间对应的小数:";
    //		output<<setw(6)<<time.hour+time.minute/60+time.second/3600;
    //	}
    //    return output;  
    //}    
    istream &operator>>(istream &input,Time& time)  
    {  
        
    //  input.ignore();//skip  
        input>>time.hour;  
         
       input.ignore();//skip  
        input>>time.minute;  
      
       input.ignore();//skip  
        input>>time.second;   
        return input;  
    }  
    //fstream &operator>>(fstream &input,Time& time)  
    //{  
    //    
      input.ignore();//skip  
    //    input>>time.hour;  
    //     
    //   input.ignore();//skip  
    //    input>>time.minute;  
    //  
    //   input.ignore();//skip  
    //    input>>time.second;   
    //    return input;  
    //}  
    

    源码 main.cpp

    #include <iostream>
    #include "string"
    #include "iquery.h"
    #include "iomanip"
    #include "cmath"
    #include "fstream"
    using namespace std;
    
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char** argv) {
    	Time time;
    	ifstream infile;
    	ofstream outfile;
    	infile.open("in.txt",ios::in);
    	if (!infile.is_open())
    	clog<<"error in open in.txt in infile";
    	infile>>time;
    	outfile.open("out.txt", std::ios::out | std::ios::app);  
    	if (!outfile.is_open())
    	clog<<"error in open out.txt in outfile";
    	outfile<<time;
    	outfile.close();
    	return 0;
    }
    注:
    已经出现过的error:
    存在的问题:
    可行性优化:
    

    欢迎访问陈风的个人博客

    展开全文
  • Java标准输入输出流简介 Java遵循标准I/O的模型,提供了Syetem.in,System.out,以及System.err。 System.out 是一个已经预先处理过的,被包装成PrintStream的对象。 System.err 和 System.out 一样,也是一个...

    Java标准输入输出流简介

    Java遵循标准I/O的模型,提供了Syetem.in,System.out,以及System.err。

    System.out 是一个已经预先处理过的,被包装成PrintStream的对象。

    System.err 和 System.out 一样,也是一个PrintStream。

    但是 System.in 不是,它是一个未经处理的InputStream。也就是说,可以直接使用 System.out 和 System.err 打印输出到控制台,但是使用System.in直接读取数据不可以,必须先做处理。

    System.in

    System.in:输入,根据键盘录入控制台。 
    它是 System 类给我们提供的,也是由 System 类给我们实例化的,我们办不到。

    System.in使用方法举例

    //去掉main后的数字分别运行
    // 1.System.in 最简单的读取字节数组,对控制台输入长度有限制
    public static void main1(String[] args) throws IOException {
        InputStream input = System.in;
        byte[] bs = new byte[100];
        System.out.println("请输入:");
        // 从控制台读取
        int total = input.read(bs);
        System.out.println("输入了:" + new String(bs, 0, total));
        input.close();
    }
    
    // 2.System.in 用BufferedReader改进,对一行长度无限制
    public static void main2(String[] args) throws IOException {
        InputStream input = System.in;
        BufferedReader br = new BufferedReader(new InputStreamReader(input));
        System.out.println("请输入:");
        // 从控制台读取
        String str = br.readLine();
        System.out.println("输入了:" + str);
        input.close();
    }

    System.out

    System.out:输出,输出到控制台。

    System.out使用方法举例

    //去掉main后数字分别运行
    // 1.System.out 简单实现向控制台输出
    public static void main1(String[] args) throws IOException {
        OutputStream output = System.out;
        output.write("你好啊".getBytes());
        output.close();
    }
    
    // 2.System.out 用BufferedWriter改进
    public static void main2(String[] args) throws IOException {
        OutputStream output = System.out;
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(output));
        bw.write("哈哈哈");
        // 换行
        bw.newLine();
        bw.write("换行了!");
        bw.close();
    }

    System.err

    System.err:在控制台输出的内容为红色字体!

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入数字:");
        if (in.hasNextInt()) {
            System.out.println("输入的是:" + in.nextInt());
        } else {
            System.err.println("输入的不是数字!");
        }
    }
    //如果输入的不是数字
    //syse提示的内容在控制台用红色字体显示,而不是syso的黑色字体

    Scanner对SystemIO的支持

    用Scanner读系统文件

    // 用Scanner读文件
    public static void main(String[] args) throws IOException {
        Scanner input = new Scanner(new FileInputStream("D:\\唐诗三百首.txt"));
        while (input.hasNextLine()) {
            System.out.println(input.nextLine());
        }
        input.close();
    }

    输入输出重定向


    介绍
    System.setErr(err);:修改syse的方向
    System.setIn(in);:修改System.in的读取方向
    System.setOut(out);:修改syso的输出方向 一般用来做错误日志的输出
    以上三个 是输出输入重定向,可以让System.in或者syso的方向改变,不从控制台读或写,读写到别的地方。

    System.in使用示范

    public static void main(String[] args) throws IOException {
        //直接将 System.in 指向 D:\\唐诗三百首.txt
        System.setIn(new FileInputStream("D:\\唐诗三百首.txt"));
        //所以这里的 input 不再指向控制台,而从D:\\唐诗三百首.txt读
        Scanner input = new Scanner(System.in);
        while (input.hasNextLine()) {
            System.out.println(input.nextLine());
        }
        input.close();
    }

    System.out使用示范

    主要用来打印错误日志

    public static void main(String[] args) throws IOException {
        //System.out指向D:\\错误日志.txt
        //这里为了方便查看写的txt格式,实际常用.log格式
        System.setOut(new PrintStream(new FileOutputStream("D:\\错误日志.txt")));
        //所以不再在控制台输出,而输出在D:\\错误日志.txt文件中
        System.out.println("发生错误了!");
    }

     

    展开全文
  • 1输入/输出流

    2019-06-12 12:54:59
    1读写字节 2Buffered Java IO:BufferedOutputStream使用详解及源码分析
    展开全文
  • Java Spring template project This project is based on a GitLab Project Template. Improvements can be proposed in the original project. CI/CD with Auto DevOps This template is compatible with Auto ...
  • 输入输出流

    2018-04-16 11:55:46
    https://blog.csdn.net/qq_22063697/article/details/52137369 ... DataInputStream和DataOutputStream 对输入流的再封装,提供了读、写基本数据类型的方法;实现了DataInput和DataOu...
  • 输入输出流重定向

    2010-07-10 15:27:00
    怎么通过测试来模拟这种情况,着实折腾了很久,最后参考别人的做法----输入输出流重定向。 private PipedOutputStream redirectedInput; private OutputStreamWriter redirectedInputWriter;...
  • java输入输出流重定向

    2011-10-06 21:31:11
     JAVA中,默认的输入是键盘,输出为显示器,而偶尔我们需要特定的输入流或输出流。在java中,这真不是一个问题!    方法一:  针对文件读写一的,这时可以直接读取、写入文件。  Java提供了丰富的文件...
  • demo1

    2013-01-05 22:38:22
    :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:
  • ——我们要输出东西,也就是设置响应的response,在下面我们利用字符输出流来向浏览器输出东西。这里利用了response的getWriter方法,这个getWriter的返回值是一个PrintWriter对象。 public void doGet...
  • 实战交付dubbo服务到k8s ... ● Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 ● 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,...
  • 前端:常用点,记不到(1)

    千次阅读 2020-06-02 17:43:20
    1、this.$router.back(); //返回上级 2、父组件可以使用 props 把数据传给子组件。 3、子组件可以使用 $emit 触发父组件的自定义事件。 Moment (超常用,时间转换) 1、将时间转换为时间戳(每次这么简单,我为...
  • JavaWeb学习1

    2021-12-05 17:53:30
    编写一个类,实现接口 把开发好的 Java 部署到 web 服务器上 HelloServlet Servelt 接口的实现:HttpServlet,GenericServlet Java 和 resources 目录下的文件在 Tomcat 执行后都会被打包到同一路径下:...
  • 1、第一次握手:客户端给服务器发送一个 SYN 报文。 2、第二次握手:服务器收到 SYN 报文之后,会应答一个 SYN+ACK 报文。 3、第三次握手:客户端收到 SYN+ACK 报文之后,会回应一个 ACK 报文。 4、服务器收到 ACK ...
  • 性能测试1

    2021-09-13 16:45:49
    、学习前的认知 我们在学习性能测试之前,需要有新的认识:性能测试,不再是像功能测试一样单纯的找 Bug,而是去找性能指标 1.转变思维 在做功能测试、自动化测试的时候,我们基本都是依托界面进行测试,也称 ...
  • JavaWeb1

    2022-03-21 16:51:18
    (2)常用的方法 1.4.5 GenericServlet1)基本概念 javax.servlet.GenericServlet主要用于定义一个通用的、与协议无关的servlet,该实现了Servlet接口。 若编写通用servlet,只需重写service抽象方法即可...
  • background-image: url() css上解决办法1.1.6 div里面的内容如何垂直居中1.1.7 RGBA1.1.8 块级元素1.1.9 行级元素1.1.10 行内块元素1.1.11 行高1.1.12 浮动1.2 Java Script1.2.1 Object.assig.
  • JavaScript数组的常用方法总结:遍历,复制,反转,排序,添加,删除(前端常见面试题必考必问_勤动手多动脑少说多做-CSDN博客_js数组倒序输出1. Array.push()向数组的末尾添加一个或多个元素,并返回新的数组长度...
  • 相比之下,XMLHttpRequest 的 API 设计并不是很好,输入输出、状态都在同一个接口管理,容易写出非常混乱的代码。 fetch()通过数据(Stream 对象)处理数据,可以分块读取,有利于提高网站性能表现,减少内存...
  • THULAC:一个高效的中文词法分析工具包 目录 软件简介在线演示编译和安装使用方式与代表性分词软件的性能对比词性标记集THULAC的不同配置获取链接注意事项历史开源协议相关论文作者常见问题致谢 软件简介 ...
  • 1、基本概念 1.1、前言 web开发: . web,网页的意思, ·静态web html,csS 提供给所有人看的数据始终不会发生变化! ·动态web 淘宝,几乎是所有的网站; 提供给所有人看的数据始终会发生变化,每人在不同...
  • 后端框架flask学习小记

    千次阅读 2021-12-09 11:10:39
    算是一个推荐算法的实战项目, 里面涉及到了前后端交互, 该项目里面,使用了Flask作为后台框架, 为了理清楚整个系统的交互,所以就快速参考着资料学习了下flask, 主要还是参考伙伴们写的flask简介和基础的内容,...
  • 所以有的时候你见到的书籍或文章有的只提起CTS,有的只提起CLI,请不要奇怪,你可以宽泛的把他们理解成一个意思,CLI是微软将CTS等内容提交给国际组织计算机制造联合会ECMA的一个工业标准。 什么是类库? 在CTS...
  • 1.JavaEE 1.1简介 JavaEE是Java的企业版,由SUN公司领导、各个厂家共同制定并得到官方认可的工业标准。 JavaEE规范是很多Java开发技术的总称,一共包括13技术规范,包括:JDBC、JNDI、EJB、RMI、IDL/CORB、JSP...
  • java面试.1

    千次阅读 2020-05-15 16:15:19
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WM1UgjaX-1589530428920)(qr_code.jpg)] 基础篇 1、 Java语言有哪些特点 2、面向对象和面向过程的区别 3 、八种基本数据类型的大小,...
  • 六万字 HTTP 必备干货学习,程序员不懂网络怎么行,篇HTTP入门不收藏都可惜!网络知识入门必备,学习起来!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,714
精华内容 685
关键字:

输入输出流内容1:标准输入输出流重定向(1)新建一个工程demo1,设计一个类time,

友情链接: jjqjvom53.rar