IO体系:
输入/输出流体系
分类 | 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
抽象基类 | InputStream | OutputStream | Reader | Writer |
访问文件 | FileInputStream | FileOutputStream | FileReader | FileWriter |
访问数组 | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
访问管道 | PipedInputStream | PipedOutputStream | PipedReader | PipedWriter |
访问字符串 |
|
| StringReader | StringWriter |
缓冲流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
转换流 |
|
| InputStreamReader | OutputStreamWriter |
对象流 | ObjectInputStream | ObjectOutputStream |
|
|
抽象基类 | FilterInputStream | FilterOutputStream | FilterReader | FileWriter |
打印流 |
| PrintStream |
|
|
推回输入流 | PushbackInputStream |
| PushbackReader |
|
特殊流 | DataInputStream | DataOutputStream |
|
|
流的单向性:
输入流:只能从中读取数据,不能写入数据
输出流:只能从中写入数据,不能从中读取数据
读写文件的主要是用到FileInputStream和FileOutputStream,他们分别是继承了,InputStream和OutputStream,下面就写一个读取文件以及写入数据到一个文件的例子。
package com.io;
import java.io.*;
public class MyIO {
public static void main(String[] args) {
//读取文件
int b = 0;
FileInputStream in = null;
try{
in = new FileInputStream("D://java//ThrowsDemo.java");
}catch (FileNotFoundException e) {
System.out.println("找不到指定文件");
System.exit(-1);
}
try{
long num = 0;
while((b=in.read())!=-1) {
System.out.print((char)b);
num++;
}
in.close();
System.out.println();
System.out.println("共读取了"+num+"个字节");
}catch (IOException e1) {
System.out.println("文件读取出错");System.exit(-1);
}
//写文件
int b1 = 0;
FileInputStream in1 = null;
FileOutputStream out = null;
try{
in1 = new FileInputStream("D://java//ThrowsDemo.java");
out = new FileOutputStream("D://java//Throw.java");
while((b1=in1.read())!=-1) {
out.write(b1);
}
in1.close();
out.close();
}catch (FileNotFoundException e2) {
System.out.println("找不到指定文件");System.exit(-1);
}catch(IOException e1) {
System.out.println("文件复制出错");System.exit(-1);
}
System.out.println("文件已复制");
}
}
基本的文件操作就是这样,总的来说就是输入输出流。而输入、输出流可分为字节流和字符流两大类,下面继续详说。