Java中I/O的原理:
  在java程序中,对于数据的输入/输出操作以”流“的方式进行的。
  流是内存中一组有序数据序列
  Java将数据从源读入到内存当中,形成了流,然后这些流可以写到目的地。
  Java中流按功能分为:节点流(原始流)和处理流(包裹流)
  处理流是在节点流的基础上提供了更加强大的读写功能
  Java中流按处理数据的不同分为字节流和字符流
  字节流:以字节为单位来处理数据的,字节流数据为8位,一般用于对二进制的数据的读写,例如声音,图像等。
  字符流:以字符为单位来处理数据的,一般用于读写文本文件的
  字节流
  字节流的基类是抽象类InputStream和OutpuStream。
  InputStream用于输入,OutputStream用于输出。
1     package src;
2
3     import java.io.File;
4     import java.io.FileInputStream;
5     import java.io.FileNotFoundException;
6     import java.io.FileOutputStream;
7     import java.io.IOException;
8
9     public class Test {
10
11         public static void main(String[] args) {
12             //输入外->内,读入数据,输出:内->外,写数据
13
14             //任务:从file1文件读取数据到内存,a.输出到控制台验证,b.输出到file2文件中
15             //1,创建一个给予file1的文件对象,,创建一个给予file2的文件对象,
16               File f1=new File("c:\file1.txt");
17
18               File f2=new File("c:\file2.txt");
19              //2、 建立一个基于c:\file1.txt文件的输入通道fis,建立一个基于c:\file2.txt文件的输 出通道fos,
20               try {
21                 FileInputStream fis=new FileInputStream(f1);
22                 FileOutputStream fos=new FileOutputStream(f2);
23               //3、把通道fis数据读入到内存,从内存写到file2文件
24                  int m;
25                  while((m=fis.read())!=-1)
26                  {
27                      fos.write(m);
28                  }
29
30
31
32             } catch (FileNotFoundException e) {
33                 // TODO 自动生成的 catch 块
34                 e.printStackTrace();
35             } catch (IOException e) {
36                 // TODO 自动生成的 catch 块
37                 e.printStackTrace();
38             }
39
40
41
42         }
43     }

  InputStream类:InputStream类是一个输入流,同样也是一个字节流。
  InputStream类是表示字节输入流的所有类的超类。其中定义了一些基本的读取字节数据流的方法,由其子类继承并扩展。
  OutputStream类是所有输出流的父类,它是一个抽象类,不能被实例化。它提供了一系列和写数据有关的方法。
  OutputStream类重要的方法是写入数据的write()方法。