您的位置:首页 > 编程语言 > Java开发

java io (下)

2017-02-11 19:41 225 查看
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. 
}  
注意:
(1)System类不能创建对象,只能直接使用它的三个静态成员。
(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");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: