一、System.in和 System.out
爲了支持標準輸入輸出設備,Java定義了兩個特殊的流對象:System.in和System.out。
System.in:對應鍵盤,是 InputStream 類型的,程序使用 System.in 可以讀取從鍵盤上輸入的數據。
System.out: 鍵盤可以被當作一個特殊的輸入流,顯示器可以被當作一個特殊的輸出流。
二、打印流——PrintStream、PrintWrite
PrintStream:
PrintStream類提供了一系列的 print 和 println 方法,可以實現將基本數據類型的格式轉化成字符串輸出,而不是輸出原始的字節內容。
PrintStream有下面幾個構造方法:
PrintStream(OutputStream out)
//autoflush 控制,在 Java 中遇到換行符(\n)時是否自動清空緩衝區
PrintStream(OutputStream out,boolean auotflush)
//encoding :指定編碼方式
PrintStream(OutputStream out,boolean auotflush, String encoding)
PrintWriter:
IO包中提供的與 PrintStream 對應的類。構造方法:
PrintWriter(OutputStream)
PrintWriter(OutputStream, boolean)
PrintWriter(Writer)
PrintWriter(Writer, boolean)
示例:
import java.io.*;
public class SystemPrintDemo{
public static void main(String args[]){
PrintWriter out = null;
// 通過 System.out 爲 PrintWriter 實例化
out = new PrintWriter(System.out);
// 向屏幕上輸出
out. print ("Hello World!");
out.close();
}
}
輸出結果:
Hello World!
三、DataInputStream與DataOutputStream
DataInputStream與 DataOutputStream提供了與平臺無關的數據操作,通常會先通過DataOutputStream按照一定的格式輸出,再通過DataInputStream按照一定格式讀入。
示例:
代碼實現:
import java.io.* ;
public class DataStreamDemo{
public static void main(String[] args) throws IOException{
// 將數據寫入某一種載體
DataOutputStream out = new DataOutputStream(new FileOutputStream("order.txt"));
// 價格
double[] prices = { 18.99, 9.22, 14.22, 5.22, 4.21 };
// 數目
int[] units = { 10, 10, 20, 39, 40 };
String[] descs = { "T 恤杉", "杯子", "洋娃娃", "大頭針", "鑰匙鏈" };
// 向數據過濾流寫入主要類型
for (int i = 0; i < prices.length; i++){
// 寫入價格,使用 tab 隔開數據
out.writeDouble(prices[i]);
out.writeChar('\t');
// 寫入數目
out.writeInt(units[i]);
out.writeChar('\t');
// 寫入產品名稱,行尾加入換行符
out.writeChars(descs[i]);
out.writeChar('\n');
}
out.close();
// 將數據讀出
DataInputStream in = new DataInputStream(new FileInputStream("order.txt"));
double price;
int unit;
StringBuffer desc;
double total = 0.0;
try{
// 當文本被全部讀出以後會拋出 EOFException,中斷循環
while (true){
// 讀出價格
price = in.readDouble();
// 跳過 tab
in.readChar();
// 讀出數目
unit = in.readInt();
// 跳過 tab
in.readChar();
char chr;
// 讀出產品名稱
desc = new StringBuffer();
while ((chr = in.readChar()) != '\n'){
desc.append(chr);
}
System.out.println("定單信息: " + "產品名稱:"+desc+",\t 數量:"+unit+",\t 價格:"+price);
total = total + unit * price;
}
}catch (EOFException e){
System.out.println("\n 總共需要:" + total+"元");
}
in.close();
}
}
執行結果: