java io (下)

java 标准io与重定向

参考链接:
http://www.2cto.com/kf/201312/262036.html


一.标准io

Java程序可通过命令行参数与外界进行简短的信息交换,同时,也规定了与标准输入、输出设备,如键盘、显示器进行信息交换的方式。而通过文件可以与外界进行任意数据形式的信息交换。

1.命令行参数

[

1.  public class TestArgs {  

2.      public static void main(String[] args) {  

3.          for (int i = 0; i < args.length; i++) {  

4.              System.out.println("args[" + i + "] is <" + args[i] + ">");  

5.          }  

6.      }  

7.  }  

运行命令:java Java C VB             //第一个java是命令,后面的是参数

运行结果:

args[0] is<Java>

args[1] is<C>

args[2] is<VB>

2.标准输入,输出数据流

java系统自带的标准数据流:java.lang.System:

[

1.  java.lang.System   

2.  public final class System  extends Object{   

3.     static  PrintStream  err;//标准错误流(输出)  

4.     static  InputStream  in;//标准输入(键盘输入流)  

5.     static  PrintStream  out;//标准输出流(显示器输出流)  

6.  }  

注意:
1System类不能创建对象,只能直接使用它的三个静态成员。
2)每当main方法被执行时,就自动生成上述三个对象。


1) 标准输出流 System.out

   System.out向标准输出设备输出数据,其数据类型为PrintStream。方法:

      Void print(参数)

      Void println(参数)

1.  import java.io.*;  

2.  public class StandardInputOutput {  

3.      public static void main(String args[]) {  

4.          int b;  

5.          try {  

6.              System.out.println("please Input:");  

7.              while ((b = System.in.read()) != -1) {  

8.                  System.out.print((char) b);  

9.              }  

10.         } catch (IOException e) {  

11.             System.out.println(e.toString());  

12.         }  

13.     }  

14. }  



2)标准输入流 System.in

    System.in读取标准输入设备数据(从标准输入获取数据,一般是键盘),其数据类型为InputStream。方法:

        int  read()  //返回ASCII码。若,返回值=-1,说明没有读取到任何字节读取工作结束。

        int  read(byte[] b)//读入多个字节到缓冲区b中返回值是读入的字节数

例如:

(方法一)

1.  import java.io.*;  

2.  public class StandardInputOutput {  

3.      public static void main(String args[]) {  

4.          int b;  

5.          try {  

6.              System.out.println("please Input:");  

7.              while ((b = System.in.read()) != -1) {  

8.                  System.out.print((char) b);  

9.              }  

10.         } catch (IOException e) {  

11.             System.out.println(e.toString());  

12.         }  

13.     }  

14. }  


(方法二)

1.  import java.io.BufferedReader;  

2.  import java.io.IOException;  

3.  import java.io.InputStreamReader;  

4.    

5.  public class StandardInputOutput {  

6.      public static void main(String args[]) {  

7.          String s;  

8.          // 创建缓冲区阅读器从键盘逐行读入数据  

9.          InputStreamReader ir = new InputStreamReader(System.in);  

10.         BufferedReader in = new BufferedReader(ir);  

11.         System.out.println("Unix系统: ctrl-d  ctrl-c 退出"  

12.                 + "\nWindows系统: ctrl-z 退出");  

13.         try {  

14.             // 读一行数据,并标准输出至显示器  

15.             s = in.readLine();  

16.             // readLine()方法运行时若发生I/O错误,将抛出IOException异常  

17.             while (s != null) {  

18.                 System.out.println("Read: " + s);  

19.                 s = in.readLine();  

20.             }  

21.             // 关闭缓冲阅读器  

22.             in.close();  

23.         } catch (IOException e) { // Catch any IO exceptions.  

24.             e.printStackTrace();  

25.         }  

26.     }  

27. }  


(方法三)

 使用java.util的scanner类

Scanner scanner=new Scanner(System.in);
String string=scanner.next();



3)标准错误流

  System.err输出标准错误,其数据类型为PrintStream,在屏幕上打印错误信息(红色字体)。


    

二.重定向

用system类的setout()和seterr()方法。

重定向out:

File file=new File("C:/Users/WWWYU/Desktop/test.txt");
PrintStream pStream=new PrintStream(new FileOutputStream(file,true));//打印到文件的末尾
System.setOut(pStream);
System.out.print("hello");

重定向err:

File file=new File("C:/Users/WWWYU/Desktop/test.txt");
PrintStream pStream=new PrintStream(new FileOutputStream(file,true));//打印到文件的末尾
System.setErr(pStream);
System.err.print("hello");



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值