一、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();
}
}
执行结果: