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