java標准輸入輸出流


java標准輸入輸出流

System 類   public final class System extends Object

包含一些有用的類字段和方法。它不能被實例化。

System 類提供的設施中,有標准輸入、標准輸出和錯誤輸出流;對外部定義的屬性和環境變量的訪問;加載文件和庫的方法;還有快速復制數組的一部分的實用方法。

static PrintStream err “標准”錯誤輸出流。
static InputStream in  “標准”輸入流。
static PrintStream out “標准”輸出流。

 

 

 

public static final InputStream in:字節輸入流,用來讀取鍵盤錄入的數據 

  例:InputStream is=System.in;

    Scanner sc=new Scanner(System.in);

public static final PrintStream out:字節輸出流,將數據輸出到命令行

  例:System.out.print();

1、讀取磁盤錄入的數據,並寫到根目錄下a.txt文件中

 1 import java.io.FileWriter;
 2 import java.io.IOException;
 3 import java.io.InputStream;
 4 import java.io.InputStreamReader;
 5 import java.io.Reader;
 6 
 7 /**
 8  * 轉換流:把字節輸入流轉換成字符輸入流 InputStreamReader
 9  *                     InputStreamReader(InputStream in)
10  * @author Administrator
11  *
12  */
13 public class InputStreamWriterDemo {
14     public static void main(String[] args) throws IOException {
15         //創建輸入流對象
16         InputStream is=System.in;
17         
18         /*
19         //創建輸出流對象
20         FileWriter fw=new FileWriter("a.txt");
21         //讀寫
22         byte[] bys=new byte[1024];
23         int len=0;
24         while((len=is.read(bys))!=-1) {
25             fw.write(new String(bys, 0, len));
26         }
27          */
28         Reader r=new InputStreamReader(is);
29         FileWriter fw=new FileWriter("a.txt");
30         char[] chs=new char[1024];
31         int len=0;
32         while((len=r.read(chs))!=-1) {
33             fw.write(chs,0,len);
34             fw.flush();
35         }
36         
37         //釋放資源
38         fw.close();
39         is.close();
40     }
41 }

2、將文件數據打印到命令行

 3 import java.io.BufferedReader;
 4 import java.io.FileReader;
 5 import java.io.IOException;
 6 import java.io.OutputStream;
 7 
 8 //需求:讀取項目根目錄下SystemInOutDemo.java,並輸出到命令行
 9 public class SystemInOutDemo {
10     public static void main(String[] args) throws IOException {
11         //創建輸入輸出流對象
12         BufferedReader br=new BufferedReader(new FileReader("SystemInOutDemo.java"));
13         OutputStream os=System.out;
14         
15         String line;//用於存儲讀取到的數據
16         while((line=br.readLine())!=null) {
17             os.write(line.getBytes());
18             os.write("\r\n".getBytes());
19         }
20         //釋放資源
21         os.close();
22         br.close();
23         
24     }
25 }

由於標准輸出流是一個字節輸出流,所以只能輸出字節或者字節數組,但是我們讀到的數據則是字符串,如果想進行輸出,還需要轉換成字節數組,非常麻煩。我們要想通過標准輸出流輸出字符串,把標准輸出流轉換成一種字符輸出流即可。可以使用轉換流OutputStreamWriter。

 1 import java.io.BufferedReader;
 2 import java.io.FileReader;
 3 import java.io.IOException;
 4 import java.io.OutputStreamWriter;
 5 import java.io.Writer;
 6 
 7 //需求:讀取項目根目錄下SystemInOutDemo.java,並輸出到命令行
 8 public class SystemInOutDemo {
 9     public static void main(String[] args) throws IOException {
10         //創建輸入輸出流對象
11         BufferedReader br=new BufferedReader(new FileReader("SystemInOutDemo.java"));
12         Writer w=new OutputStreamWriter(System.out);//多態,父類引用指向子類對象
13         //進行數據讀寫
14         String line;
15         while((line=br.readLine())!=null) {
16             w.write(line);
17             w.write("\r\n");
18         }
19         //釋放資源
20         w.close();
21         br.close();
22     }
23 }

還可以結合高效緩沖流使用:

 1 import java.io.BufferedReader;
 2 import java.io.BufferedWriter;
 3 import java.io.FileReader;
 4 import java.io.IOException;
 5 import java.io.OutputStreamWriter;
 6 
 7 //需求:讀取項目根目錄下SystemInOutDemo.java,並輸出到命令行
 8 public class SystemInOutDemo {
 9     public static void main(String[] args) throws IOException {
10         //創建輸入輸出流對象
11         BufferedReader br=new BufferedReader(new FileReader("SystemInOutDemo.java"));
12         BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
13         //進行數據讀寫
14         String line;
15         while((line=br.readLine())!=null) {
16             bw.write(line);
17             bw.newLine();
18         }
19         //釋放資源
20         bw.close();
21         br.close();
22     }
23 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM