集合:
集合和数组的区别:
1长度
数组的长度是固定 的,集合的长度是可变的
2数组可以存储基本类型和对象,集合只能存储对象
Collection 层次结构 中的根接口。
Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。
一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接
实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。
迭代器iterator:可以理解为按照顺序读取
(获取集合中的元素)
IO流
字节流的抽象基类
InputStream OutputStream
字符流的抽象基类
Reader Writer
注意:由这四个基类派生出来的子类名称都是以其父类名作为子类名的后缀
如:InputStream的子类FileInputStream
如: Reader的子类FileReader
Io程序的书写
导入Io包中的类
进行异常处理
在finally中对 流 进行关闭
FileWriter 写文件
//(void) write 写入数据,文档格式
BufferedWriter 进行封装 对文件进行写
FileWriter 对路径的确定
BufferedReader 进行封装 对文件读取
FileReader 对路径的确定
FileWriter fw =new FileWriter("D://demo.txt");
创建该对象的时候做了那些事情
1.在堆内存中产生了一个实体
2.调用了系统底层资源,其实就是调用了windows中的功能,在指定位置创建了一个文件,建立数据存储的目的地,用于存放即将写入的数据
3.因为目的可能因为路径错误而导致创建失败,所以抛出了IOException,
//第一步:创建FileWriter字符写入流对象
//如果要创建的文件已经存在,那么会产生覆盖(把之前的删掉,写入新的)
FileWriter fw =new FileWriter("D://demo.txt");
//(void write) 写入数据,文档格式
//第二部:向文件中写入数据
fw.write("abc");//写到内存中(默认写到内存中的一个缓冲区) 没有刷新到文件中
//第三部:刷新内存缓冲区,将流中的数据刷到目的地
//fw.flush();
//第四部:close方法,关闭流这个方法包含两步,
//1.其实就是调用了flush方法 ,close方法中默认调用flush,所以可以不写flush
//2.关闭了底层的资源,将资源关闭
fw.close();//在最后调用,在close后面不能调用write方法 因为流已经关闭了
\r\n换行
//第二个参数true,表示支持文件内容追加
fw = new FileWriter("D://demo.txt",true);
FileReader 用来读取字符文件的便捷类
read
//创建一个读取流文件,并关联要读取的文件
//要将读取的文件作为构造函数的参数进行传递,因为读取流对象创建的时候必须要有数据源
FileReader fr = new FileReader("D://demo.txt");
//读取数据
int ch =fr.read();
System.out.println((char)ch);
//System.out.println(ch); 结果为97 字符编码表中a对应的字符为97
//又因为在D://demo.txt的第一个字符为a read只能读取第一个字节 所以输出结果为97 如果想用具体字符的话要强转
//System.out.println((char)ch);结果为a
//read方法每调用一次 就调取一个字符
int ch1 =fr.read();
System.out.println((char)ch1);
//关闭资源
newLine换行