I/O流

一个I/O流表示输入源或者输出目的地。流可以表示很多不同类型的源和目的地,包括磁盘文件、设备、其他程序和存储器阵列。一个流可以理解为一个数据的序列。
Java.io 包几乎包含了所有操作输入、输出需要的类。

标准流

Java平台支持三种标准流:标准输入System.in,标准输出System.out,标准错误System.err

字节流和字符流

字节流是最基本类型的流,所有字节流类都是从InputStreamOutputStream继承来的。字符流能够自动适应本地字符集,用流类实现的输入输出能自动地与本地字符集互相转换。所以字符流类都是从ReaderWriter继承来的。

对于无缓冲I/O,每个读取或存入请求都是底层操作系统直接处理的,每个这样的请求常常会触发磁盘存取、网络活动或其他相对昂贵的操作,所以导致程序的效率很低。Java平台实现了缓冲I/O流。缓冲输入流从内存缓冲区读取数据,缓冲区空时才调用本地输入API;被缓冲的输出流把数据写入缓冲区,缓冲区满是才调用本地输出API。

下例演示从文件读取并输出到控制台:

import java.io.*;
import java.util.Scanner;
public class ScanXan{
    public static void main(String[] args) throws IOException{
        Scanner s = null;

        try {
            s = new Scanner(new BufferedReader(new FileReader("xanadu.txt")));  //读取文件并绑定到缓冲流,再绑定到Scanner扫描器

            while (s.hasNext()) {
                System.out.println(s.next());
            }
        } finally {
            if (s!=null) {
                s.close();
            }
        }
    }
}
format方法

format方法可以根据格式化字符格式化多个参数。所有的格式化标识符都是以百分号%开头。

%% 输出%
%n 输出平台特定的行终止符。\n也可以但尽量不要用这个
%d 表示把整型值格式化为十进制值
%f 把浮点值格式化为十进制值
%x 把整数格式化为十六进制
%s 把任意值格式化为字符串

System.out.format("%f, %1$+020.10f %n", Math.PI);
//标志+表示这个数应该用符号格式化;0表示补位字符;20表示宽度;10表示精度
//1$和<都可以表示参数索引。

0 条评论

发表评论

邮箱地址不会被公开。