I/O系统(input,output) 从一个数据源读取到java的程序,称为输入流,(写,读取)从一个java程序到达数据源,称为输出流。所谓流,就是程序到数据源建立管道传输,大部分为单向流。IO流的分类:第一张分类:1.输入流2.输出流(以上讲的内容)第二种分类:1.字节流(比如MP3 MP4等以字节为主的文件)2.字符流(以文本等以字符为主的文件)第三种分类:(javaIO系统里非常巧妙的设计模式,暂时未知!)1.节点流2.处理流(在节点流的基础上再加工) 字节流的核心类:inputStream 父类(抽象) OutputStreamFilelnputStream 子类 FileOnputStream用硬盘的文件来读取数据 把数据写入到硬盘的文件核心类的核心方法:InputStream:int read (byte[] b, int off , int len) byte[] b:要读取的数据,变为比特类型 int off:偏移量,意思为从哪一位开始读取 int len: 规定读取的长度OutputStream:void write (byte[] b, int off, int len) byte[] b:把要写入的数据变为比特类型。 int off:规定好偏移量后才写入 int len:规定写入的长度 输入流:如何输入数据(字节型)://第一步骤:导入类;import java.io.*;class Test{ public static void main(String arge[]){ //声明输入流引用 FileInputStream fis = null; try{ //生成代表输入流的对象 fis = new FileInputStream("E:/work/android/src/from.txt"); //生成一个字节的数组 byte [] buffer = new byte[100]; //调用输入流对象的read方法,读取数据,读的都是字节! fis.read(buffer,0,buffer.length); /*当有偏移量时,数组长度也必须减去相对的偏移量,否则会 照成越界*/ for(int i = 0; i < buffer.length; i++){ System.out.println(buffer[i]); } } catch(Exception e){ System.out.println(e); } }} 如何输入数据(字符型)://第一步骤:导入类;import java.io.*;class Test{ public static void main(String arge[]){ //声明输入流引用 FileInputStream fis = null; try{ //生成代表输入流的对象 fis = new FileInputStream("E:/work/android/src/from.txt"); //生成一个字节的数组 byte [] buffer = new byte[100]; //调用输入流对象的read方法,读取数据,读的都是字节! fis.read(buffer,0,buffer.length); String s = new String(buffer); /*如果打印出空字符和空格时,需调用String里的trim方法 将会去除字符串的首尾空格和空字符 s = s.trim(); */ System.out.println(s); } catch(Exception e){ System.out.println(e); } }} 输出流://第一步骤:导入类;import java.io.*;class Test{ public static void main(String arge[]){ //声明输入流引用 FileInputStream fis = null; //声明输出流的引用 FileOutputStream fos = null; try{ //生成代表输入流的对象 fis = new FileInputStream("E:/work/android/src/from.txt"); //生成代表代表输出流的对象 fos = new FileOutputStream("e:/work/android/src/to.txt"); //生成一个字节的数组 byte [] buffer = new byte[100]; //调用输入流对象的read方法,读取数据,读的都是字节! int temp = fis.read(buffer,0,buffer.length); fos.write(buffer,0,temp); } catch(Exception e){ System.out.println(e); } }}