1, 流是一组有序的数据序列,根据操作类型,可以分为输入流和输出流,实际上是程序与文件/数组/网络连接/数据库的关系,但要以程序为中心。
2,IO流分类
1)按流向分:输入流与输出流
2)按数据分:字节流:二进制,一切文件均可
字符流:文本文件,只处理纯文本
3,字符流与字节流(重点)
1),字节流:输入流:InputStream(字节输入流)
输出流:OutputStream(字节输出流)
2),字符流:输入流:Reader(字符输入流)
输出流:Writer(字符输出流)
4,操作
举例:搬家------------->读取文件
1)关联房子 ----------->建立与文件的联系---------------->创建file对象
2)选择搬家------------->选择对应流---------------------->文件输入流(InputSream,FileInputStream)/文件输出流(InputSream,FileInputStream)
3)搬家------------------>读取/写出
a) 卡车大小------->数组大小
b)运输------------->读取/写出
4)打发over--------------->释放资源
---------读取文件内容-------------
public static void test()//读取文件内容操作 { File src = new File("e:/test/zjf.txt"); InputStream is = null; try { is = new FileInputStream(src);//使用src对象创建is对象 int len = 0; byte[] car =new byte[100]; try { //String info = null; while(-1!=(len=is.read(car)))//当len=-1时表示已经读到文件末尾 {//将字节流转变成字符流,然后读取字符流 String info = new String(car,0,len); System.out.println(info);//读取文件内容 } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(is!=null)//将数据读取完后需要释放资源 { try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
-------------向文件中写入内容----------------------
public static void test1() { File dest = new File("e:/test/zjf.txt"); OutputStream is = null; try { is = new FileOutputStream(dest,false);//true代表在文件中追加内容,false代表更新文件内容,不保留原有的 String src = "hkafhgkshgkag"; byte[] data = src.getBytes(); try { is.write(data); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
原文:http://www.cnblogs.com/zjf-293916/p/6002056.html