System类对IO的支持

来源:互联网 发布:c语言入门基础教程 编辑:程序博客网 时间:2024/05/14 13:33

System类对IO的支持


System类中存在着三个常量:

No.         常量                                          描述                                          public  static finalPrintStream out   表示的是一个标准的输出,输出的位置是显示器    public static final PrintStream err表示错误,错误的输出 public static final InputStream in表示的是键盘的输入,标准输入

1、System.out

System.out是PrintStream的实例,常用的方法就是向屏幕上打印信息,当然如果使用System.out的话也可以直接为OutputStream实例化。

package com.demo.io;import java.io.IOException;import java.io.OutputStream;public class SystemOutDemo {public static void main(String[] args) throws IOException {//此时具备了向屏幕输出的能力OutputStream outputStream = System.out;//输出内容outputStream.write("hello world".getBytes());//关闭流outputStream.close();}}

2、System.err 表示错误输出

package com.demo.io;public class SystemErr {public static void main(String args[]){try {Integer.parseInt("hello");} catch (NumberFormatException e) {System.out.println("out输出结果是:"+e);System.err.println("err输出结果是:"+e);}}}

*System.out 一般的信息是愿意展示给用户看见的

*System.err 一般的信息是不愿意展示给用户看见的


3、System.in 

System.in 实际上表示的是一个键盘的输入,使用此操作,可以完成键盘输入数据功能。

package com.demo.io;import java.io.IOException;import java.io.InputStream;public class SystemINDemo {public static void main(String args[]) throws IOException{InputStream inputStream = System.in;//准备键盘输入数据byte[] b = new byte[5];System.out.println("请输入内容:");int len = inputStream.read(b);System.out.println("输入的内容是:"+new String(b, 0, len));inputStream.close();}}
此时已经实现了键盘输入的功能,但是此过程中在使用时会存在长度限制而且输入中文的时候也会存在问题。此时就可以通过另一种方式,不指定大小,边读边判断是否结束。

package com.demo.io;import java.io.IOException;import java.io.InputStream;public class SystemINDemo2 {public static void main(String args[]) throws IOException{InputStream inputStream = System.in;//准备键盘输入数据System.out.println("请输入内容:");int temp = 0; //接收内容StringBuffer buf = new StringBuffer();while((temp=inputStream.read())!=-1){//转型char c = (char)temp;//判断是否是回车if(c=='\n'){//退出循环break;}buf.append(c);}System.out.println("输入的内容是:"+buf);inputStream.close();}}
此时,数据读取的时候没有长度限制了。(但是中文乱码了)
但是在输入中文的时候就无法正确取读了,因为每次读的是一个字节,应该按照整体取读,那么如果想要完成更好的读取操作,则只能使用后续的BufferReader类完成。


输出、输入重定向

System.out 、System.err  都有固定的输出目标,都是屏幕

System.in有固定的输入目标,都是键盘

但是在System类中提供了一系列输入输出重定向的方法,可以改变System.out、System.err、System.in的输入输出位置。

*System.out重定向: public static void setOut(PrintStream out)

 *System.err重定向: public static void setErr(PrintStream err)

 *System.in重定向:  public static void setIn(PrintStream in)


范例:验证输出重定向

package com.demo.io;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.PrintStream;/** * 重定向的例子 */public class RedirectSystemOutDemo {public static void main(String args[]) throws FileNotFoundException{File file = new File("g:"+File.separator+"demo.txt");System.setOut(new PrintStream(new FileOutputStream(file)));System.out.println("hello world");}}


提示:

在开发中不建议System.err的输出位置,只建议修改System.out的输出位置

一般System.in的操作最好不要去修改




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信红包充话费充错了怎么办 手机qq不能发红包或转账怎么办 qq给人发红包被骗了怎么办 qq发红包对方看不不到怎么办 手机浏览器支付页面弹不出来怎么办 新手机登录微信需要验证怎么办 手机淘宝注册账号换手机号后怎么办 冒充微信好友诈骗被骗了怎么办 刚刚激活的电信手机号码忘了怎么办 用手机充话费充错了怎么办 王者荣耀号丢了换成了别的号怎么办 微信给空号q币怎么办 qq密码被别人改了怎么办怎么登 qq刚改了密码忘了怎么办 qq密码忘了想改密码怎么办 qq账号和密码都忘了怎么办 我的微信被别人改了密码怎么办 微信被盗密码被改了怎么办 微信被盗了密码都被改了怎么办 微信被别人改密码改手机号了怎么办 微信号手机号码换了密码改了怎么办 电信充值卡的密码刮花了怎么办 qq充了q币不到账怎么办 开通黄钻不支持手机话费开通怎么办 银行卡给红包充值迟迟不到账怎么办 我想用信用卡往微信零钱充钱怎么办 修改密保手机跳过原手机验证怎么办 骏卡有用但是充不进去怎么办 在云南移动上充错话费了怎么办 手机版本太低安装不了支付宝怎么办 手机下载支付宝后找不到了怎么办 王者荣耀充值成功游戏未到账怎么办 银行卡号和密码都忘了怎么办 微信支付密码和银行卡号忘了怎么办 请问5位数的密码忘记了怎么办 苹果手机四位数密码忘记了怎么办 锡山教育app登陆密码忘了怎么办 新商盟手机订烟登录忘记密码怎么办 在qq上修改支付密码忘记怎么办 微信红包支付密码忘了怎么办 qq钱包绑定了别人的银行卡怎么办