第一章:IO概述_IO流概述及分类

1.字节流:以“字节”的方式操作数据的。可以读、写任何文件。
				a.输出流:OutputStream(抽象类)三种输出方法
						1).write(int b):输出一个字节
						2)write(byte[] arr):输出一个字节数组
						3)write(byte[] arr, int off,int len):输出字节数组的一部分。
						|--FileOutputStream(子类)
				b.输入流:InputStream(抽象类)
						|--FileInputSream(子类)
	2.字符流:以“字符”的方式操作数组。只能读、写纯文本文件。
				a.输出流:Writer(抽象类)
							|--OutputStreamWriter(转换流)
									|--FileWriter(子类)
				b.输入流:Reader(抽象类)
							|--OutputSreamReader(转换流)
									|--FileReader(子类)

第一章:字节流_输入流_InputStream的读取方式:

1.读取的方法:
			a.int read():读取一个字节
			b.int read(byte[] byteArray):读取一个byte[]数组。
	2.子类FileInputStream的使用:
			a.构造方法:
				1.FileInputStream(String filename):
				2.FileInputStream(File filename):
		注意:
			1.构造时,文件必须存在,否则抛异常
			2.构造时,只能构造在文件上,不能构造在目录上。

第三章:字符流_概述

1.“字符流”是读写“纯文本文件”。使用“字节流”只能一次读写一个字节,但对于其他国家的文字,很多都是两个、多个字节表示一个字符,这样使用“字节流”操作就很不方便,所以Java又提供了“字符流”。
	2.“字符流”也是基于“字节流”的。

第三章:字符流_输出流_Writer的输出方法

1.五种输出方法
		1).write(int c):输出一个字符。
		2).write(char[] arr):输出一个字符数组;
		3).write(char[] arr,int off,int len):输出字符数组的一部分;
		4).write(String s):输出一个字符串。
		5).write(String s,int off,int len):输出字符串的一部分。
	2.子类FileWriter的构造方法:(四种构造方法)
		1).FileWriter(String fileName) 构造一个给定文件名的FileWriter对象。  
		2).FileWriter(String fileName, boolean append) 构造一个FileWriter对象,给出一个带有布尔值的文件名,表示是否附加写入的数据。  
		3).FileWriter(File file) 给一个File对象构造一个FileWriter对象。  
		4).FileWriter(File file, boolean append) 给一个File对象构造一个FileWriter对象。

第三章:字符流_输出流_Writer的追加写入及换行

1.追加写入:构造方法
					FileWriter(String(File) name,boolean append):
					第二个参数为true,即为追加写入
		2.换行:
					out.write("\r\n")

第三章:字符流_输入流_Reader的读取方法

1.Reader的读取方法
			1. int read():读取一个字符;
			2. int read(char[ ] chArray):读取一个字符数组
		2.子类FileReader的构造方法
			1.FileReader(String fileName);
			2.FileReader(File fileName);
public class Demo{
	public static void main(String[] args) throws Exception{
		//1.构造一个输入流
		FileReader in = new FileReader("xxxx.txt");
		//2.一次读取一个字符
		int c = 0;
		while((c=in.read())!=-1){
  		 system.out.println("转换为字符:"+(char)c);
  	}
  		//3.一次读取多个字符
  		char[] chArray = new char[3];
  		int len=0;
  		while((len=in.read(chArray))!=-1){
		system.out.println(new string(chArray,0,len));
		}
 }
}

第四章:IO异常的处理_JDK7前的处理方式

public static void main(String[] args) {
    FileWriter out = null;
    try {
        out = new FileWriter("demo05.txt");
        out.write("哈啰");

    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        if(out != null) {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

第四章:IO异常的处理_JDK7后的处理方式

public class Demo {
    public static void main(String[] args) {
        try(FileWriter out = new FileWriter("demo06.txt")){
            out.write("呵呵");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //当try...catch...执行完毕后,out会自动关闭。不需要我们自己关闭了
    }
}

字节流和字符流小结:

1)字节流:只要是复制文件,使用字节流
			a.输出流:OutputStream(抽象类)三种输出方法
				1).write(int b):输出一个字节
				2).write(byte[] arr):输出字节数组
				3).write(byte[] arr,int off,int len):输出字节数组的一部分。
			b..输入流:InputStream(抽象类)(两种读取的方法)
				1).int read():读取一个字节;
				2).int read(byte[] byteArray):读取一个字节数组。
	 2)字符流:操作纯文本文件,使用字符流。
	 		a.输出流:Writer(抽象类)(五种输出的方法)
	 				1).write(int c):输出一个字符
					2).write(char[] charr):输出字符数组
					3).write(char[] arr,int off,int len):输出字符数组的一部分
					4).write(String s):输出一个字符串。
					5).write(String s,int off,int len):输出字符串的一部分
			b.输入流:Reader(抽象类)(两种读取的方法)
					1).int read():读取一个字符;
					2).int read(char[] chArray):读取一个字符数组。

第五章:属性集_Properties类概述

1).java.util.Properties(类):它是一个“Map”集合类,但他内部包含了一些和IO流结合使用的方法,
					可以很方便的操作“配置文件”。
		2).什么是“配置文件”:指程序在运行时存储的一些用户数据的文件。它就是纯文本文件。在世界范围内,有一个对于配置文件的通用的规范,配置文件的内部格式:
			配置文件.txt
			--------------------------------------
			名1 = 值
			名2 = 值
			...
			名n = 值
   由于这种结构非常匹配Map的结构,所有Java中提供了Map的类来结合IO流,操作这种配置文件。

第五章:属性集_Properties类与流相关的方法介绍

1).store(Writer out,String comm):将集合中的数据写入到配置文件;
		2).load(Reader in):将文件中的数据读取到集合中。