鍍金池/ 教程/ Java/ Java標(biāo)準(zhǔn)輸入/輸出/錯(cuò)誤流
Java文件屬性
Java FilePermission示例
Java Externalizable實(shí)例
Java文件操作
Java文件鎖
Java文件系統(tǒng)
Java異步I/O
Java Reader/Writer
Java File實(shí)例
Java FileReader示例
Java控制臺(tái)
Java文件所有者權(quán)限
Java通道
Java ByteArrayOutputStream示例
BufferedOutputStream示例
Java FileInputStream示例
Java DataInputStream
Java BufferedInputStream
Java Jar Manifest
Java Console類示例
BufferedWriter示例
Java輸入/輸出教程
Java對(duì)象序列化
Java文件教程
Java DataInputStream類型
Java Zip字節(jié)數(shù)組
Java FileWriter示例
FileOutputStream示例
Java PrintStream
Java Scanner類
BufferedInputStream示例
Java字符集
ByteArrayInputStream示例
Java路徑操作
Java DataOutputStream
Java符號(hào)鏈接
Java FilterWriter示例
Java Jar API
BufferedReader實(shí)例
Java Pipe(管道)
Java jar文件
Java CharArrayReader示例
Java CharArrayWriter示例
Java PushbackInputStream
Java FilterReader示例
Java zip文件
Java InputStream
Java標(biāo)準(zhǔn)輸入/輸出/錯(cuò)誤流
Java文件內(nèi)容和讀寫
Java FilterInputStream示例
Java內(nèi)存通道
Java路徑
Java令牌和字符串拆分
Java隨機(jī)訪問(wèn)文件
Java文件樹(shù)
Java緩沖區(qū)讀寫
Java FileOutputStream
Java目錄事件
Java FilterOutputStream示例
Java DataOutputStream實(shí)例
FileDescriptor示例

Java標(biāo)準(zhǔn)輸入/輸出/錯(cuò)誤流

只要使用OutputStream對(duì)象就可使用System.outSystem.err對(duì)象引用。只要可以使用InputStream對(duì)象就可以使用System.in對(duì)象。

System類提供了三個(gè)靜態(tài)設(shè)置器方法setOut(),setIn()stdErr(),以用自己的設(shè)備替換這三個(gè)標(biāo)準(zhǔn)設(shè)備。

要將所有標(biāo)準(zhǔn)輸出重定向到一個(gè)文件,需要通過(guò)傳遞一個(gè)代表文件的PrintStream對(duì)象來(lái)調(diào)用setOut()方法。

import java.io.PrintStream;
import java.io.FileOutputStream;
import java.io.File;

public class Main {
  public static void main(String[] args) throws Exception {
    File outFile = new File("stdout.txt");
    PrintStream ps = new PrintStream(new FileOutputStream(outFile));

    System.out.println(outFile.getAbsolutePath());

    System.setOut(ps);

    System.out.println("Hello world!");
    System.out.println("Java I/O  is cool!");
  }
}

上面的代碼生成以下結(jié)果。

F:\website\yiibai\worksp\stdout.txt

標(biāo)準(zhǔn)輸入流

可以使用System.in對(duì)象從標(biāo)準(zhǔn)輸入設(shè)備(通常是鍵盤)讀取數(shù)據(jù)。
當(dāng)用戶輸入數(shù)據(jù)并按Enter鍵時(shí),輸入的數(shù)據(jù)用read()方法每次返回一個(gè)字節(jié)的數(shù)據(jù)。
以下代碼說(shuō)明如何讀取使用鍵盤輸入的數(shù)據(jù)。\n是Windows上的換行字符。

import java.io.IOException;
public class Main {
  public static void main(String[] args) throws IOException {
    System.out.print("Please type   a  message  and  press enter: ");

    int c = '\n';
    while ((c = System.in.read()) != '\n') {
      System.out.print((char) c);
    }
  }
}

由于System.inInputStream的一個(gè)實(shí)例,可以使用任何具體的裝飾器從鍵盤讀取數(shù)據(jù); 例如,可以創(chuàng)建一個(gè)BufferedReader對(duì)象,并從鍵盤讀取數(shù)據(jù)一行一次作為字符串。

上面的代碼生成以下結(jié)果。

Please type   a  message  and  press enter: System.in.read demo...
System.in.read demo...

示例

以下代碼說(shuō)明如何將System.in對(duì)象與BufferedReader一起使用。程序不斷提示用戶輸入一些文本,直到用戶輸入Qq來(lái)退出程序。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String text = "q";
    while (true) {
      System.out.print("Please type a message (Q/q to quit) and press enter:");
      text = br.readLine();
      if (text.equalsIgnoreCase("q")) {
        System.out.println("We have  decided to exit  the   program");
        break;
      } else {
        System.out.println("We typed: " + text);
      }
    }
  }
}

如果想要標(biāo)準(zhǔn)輸入來(lái)自一個(gè)文件,必須創(chuàng)建一個(gè)輸入流對(duì)象來(lái)表示該文件,并使用System.setIn()方法設(shè)置該對(duì)象,如下所示。

FileInputStream fis  = new FileInputStream("stdin.txt"); 
System.setIn(fis); 
// Now  System.in.read() will read   from  stdin.txt file

上面的代碼生成以下結(jié)果。

Please type a message (Q/q to quit) and press enter:abc
We typed: abc
Please type a message (Q/q to quit) and press enter:yes or no?
We typed: yes or no?
Please type a message (Q/q to quit) and press enter:yes
We typed: yes
Please type a message (Q/q to quit) and press enter:q
We have  decided to exit  the   program

標(biāo)準(zhǔn)錯(cuò)誤設(shè)備

標(biāo)準(zhǔn)錯(cuò)誤設(shè)備用于顯示任何錯(cuò)誤消息。Java提供了一個(gè)名為System.errPrintStream對(duì)象。使用它如下:

System.err.println("This is  an  error message.");