O体系:
输入/输出流体系
分类 | 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
抽象基类 | 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("文件已复制");
- }
- }
基本的文件操作就是这样,总的来说就是输入输出流。而输入、输出流可分为字节流和字符流两大类,下面继续详说。