BufferedInputStream示例
BufferedOutputStream示例
BufferedReader實例
BufferedWriter示例
ByteArrayInputStream示例
Java ByteArrayOutputStream示例
Java CharArrayReader示例
Java CharArrayWriter示例
Java Console類示例
Java DataInputStream類型
Java DataOutputStream實例
Java Externalizable實例
Java File實例
FileDescriptor示例
Java FileInputStream示例
FileOutputStream示例
Java FilePermission示例
Java FileReader示例
Java FileWriter示例
Java FilterInputStream示例
Java FilterOutputStream示例
Java FilterReader示例
Java FilterWriter示例
Java標準輸入/輸出/錯誤流
只要使用OutputStream
對象就可使用System.out
和System.err
對象引用。只要可以使用InputStream
對象就可以使用System.in
對象。
System
類提供了三個靜態設置器方法setOut()
,setIn()
和stdErr()
,以用自己的設備替換這三個標準設備。
要將所有標準輸出重定向到一個文件,需要通過傳遞一個代表文件的PrintStream
對象來調用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!");
}
}
上面的代碼生成以下結果。
F:\website\yiibai\worksp\stdout.txt
標準輸入流
可以使用System.in
對象從標準輸入設備(通常是鍵盤)讀取數據。
當用戶輸入數據並按Enter
鍵時,輸入的數據用read()
方法每次返回一個字節的數據。
以下代碼說明如何讀取使用鍵盤輸入的數據。\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.in
是InputStream
的一個實例,可以使用任何具體的裝飾器從鍵盤讀取數據; 例如,可以創建一個BufferedReader
對象,並從鍵盤讀取數據一行一次作爲字符串。
上面的代碼生成以下結果。
Please type a message and press enter: System.in.read demo...
System.in.read demo...
示例
以下代碼說明如何將System.in
對象與BufferedReader
一起使用。程序不斷提示用戶輸入一些文本,直到用戶輸入Q
或q
來退出程序。
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);
}
}
}
}
如果想要標準輸入來自一個文件,必須創建一個輸入流對象來表示該文件,並使用System.setIn()
方法設置該對象,如下所示。
FileInputStream fis = new FileInputStream("stdin.txt");
System.setIn(fis);
// Now System.in.read() will read from stdin.txt file
上面的代碼生成以下結果。
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
標準錯誤設備
標準錯誤設備用於顯示任何錯誤消息。Java提供了一個名爲System.err
的PrintStream
對象。使用它如下:
System.err.println("This is an error message.");