IO:指的是设备之间进行数据传入的流 按照流向分类: 输入流 输出流 按照数据类型分类: 字节流 A:字节输入流 InputStream FileInputStream: FileInputStream fis = new FileInputStream("读取数据的文件名"); 字节缓冲输入流:BufferedInputStream BufferedInputStream bis = new BufferedInputStream(new FileInputStream("读取数据的文件名")); //注意:这里的文件必须提前存在 字节输入流读取数据两种方式: 1、一次读取一个字节 int b = 0; while((b=bis.read())!=-1){ System.out.print((char)b); } bis.close(); 2、一次读取一个字节数组 byte[] bytes = new byte[1024]; int length = 0; while((length = bis.read(bytes))!=-1){ System.out.print(new String(bytes,0,length)); } bis.close(); B: 字节输出流 OutputStream FileOutputStream: FileOutputStream fos = new FileOutputStream("写文件的名字"); 字节缓冲输出流:BufferedOutputStream BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(写文件的名字)); //注意:这里文件,可以不存在,之后会自动创建 写数据的方式: 1、一次写一个字节 2、一次写一个字节数组 3、一次写一个字节数组的一部分 字符流(转换流) = 字节流 + 编码表 A: 字符输入流 Reader InputStreamReader: InputStreamReader isr = new InputStreamReader(new FileInputStream("读取数据的文件名")); 简化写法:FileReader FileReader fr = new FileReader("读取数据的文件名"); 普通字符输入流读取数据两种方式: 1、一次读取一个字符 int ch = 0; while((ch = fr.read())!=-1){ System.out.print((char) ch); } fr.close(); 2、一次读取一个字符数组 char[] chars = new char[1024]; int length = 0; while((length = fr.read(chars))!=-1){ System.out.print(new String(chars,0,length)); } fr.close(); 字符缓冲输入流:BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("读取数据的文件名"))); BufferedReader br = new BufferedReader(new FileReader("读取数据的文件名")); 字符流读取数据的第三种方式:一次读取一行 readLine() String s = null; while((s = br.readLine())!=null){ System.out.print(s); } br.close(); B: 字符输出流 Writer OutputStreamWriter: OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("写文件的名字")); 简化写法:FileWriter FileWriter fw = new FileWriter("写文件的名字"); 写数据的方式: 一次写一个字符 一次写一个字符数组 一次写一个字符数组的一部分 一次写一个字符串 高效流,字符缓冲输出流:BufferedWriter BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("写文件的名字"))); BufferedWriter bw = new BufferedWriter(new FileWriter("写文件的名字")); 字符流特殊的写数据方法: newLine() 写一个换行符,根据系统不同,这里换行符也是不一样的。