复习:
-
Map:存储的是键值对,健是唯一的。
a) HashMap:底层基于数组+链表的结构。默认初始容量是16,默认加载因子是0.75f。如果指定了初始容量,经过运算会变成2n的形式。在扩容的时候默认每次增加一倍。允许存储null健和null值。异步式线程不安全
b) Hashtable:底层基于数组+链表的结构。默认初始容量是11,默认加载因子是0.75f。如果指定了初始容量,指定多大就是多大。在扩容的时候是在当前容量的基础上增加一倍,然后再+1。不允许健或者值为null。同步式线程安全。
c) 遍历映射:keySet、entrySet -
File:代表文件或者目录的类。File对象所代表的文件或者目录不一定真实存在,所以在操作File之前一般都会判断File的存在性。
字节的定义:
字节(Byte)是一种计量单位,表示数据量多少,他是计算机信息技术用于计算存储容量的一种计量单位。
Byte即字节的意思,是java中的基本数据类型,用来声明字节型的变量,一个字节包含8个位,所以,byte类型的取值范围-128到127。字符的定义:
字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!#¥%……&()–+、等等。
IO流
是一套用于传输数据的机制。IO – Input Output – 输入输出流。数据是从外部流向程序 – 输入流;数据是从程序流向外部 – 输出流。 读取文件 – 数据从文件流向了程序 – 输入流;向一个文件中写入数据 – 数据从程序流向了文件 – 输出流。
根据流的传输方向:输入流、输出流
根据流的传输形式:字符流、字节流
四个基本流都是抽象类。
数据的来源/目的地:磁盘、内存、外部设备、网络
向TXT文件中写入一个字符串 ----- 输出流、字符流、和文件相关的流 —FileWriter
文件字符流:
方法:
FileWriter:创建新文件,如果指定的文件不存在,则将新文件作为操作的目标;如果指定的文件存在,则利用掉新文件覆盖掉原文件。
write():写数据,数据不是直接写到文件中而是先写到缓冲区中,等缓冲区满了之后再将缓冲区中的数据一次性倒入文家中,但是缓冲区没有满程序就已结束,导致数据死在缓冲区中。
flush():创刷缓冲区
close():关闭流,释放文件允许别的流操作这个文件;留在关闭之前会自动冲刷一次缓冲区;以防有数据死在缓冲区中
FileWriter:写文件
流中的异常处理:
a) 将流对象放在try之外声明并且赋值为null, 放在try之内进行创建
b) 在关流之前需要判断流对象是否为null
c) 关流之后,需要将流置为null
d) 写完数据之后需要手动冲刷一次缓冲区,以防关流失败而没有自动冲刷导致数据死在缓冲区中
FileRead:读文件
练习:复制TXT文件
一个输入流读原文件,一个输出流将读出的内容写到新文件中
注意:Java中的原生字符流不能读取office组件(Word,Excel,PPT)—POI。
Java中字符流只能操作字符类文件,例如:txt/java/html
缓冲流
提供缓冲区的流
BufferedReader – 缓冲输入流。利用其它的字符输入流来构建BufferedRead,提供了按行读取的方法实现高效读取。
BufferedWriter – 缓冲输出流。提供了一个更大的缓冲区,提供了一个newLine()用于进行换行
newLine():在不同的操作系统中,自动翻译为当前操作系统的换行符。
模式:针对一类问题的解决方案
设计模式:软件开发过程中,针对常见问题总结的解决方案
装饰设计模式:利用同类对象来构建本类对象,然后对该对象的部分功能进行改善或者增强的方式
BufferedReader:
BufferedWriter:
练习:统计Java代码的行数
找到Java文件 -> 按行读取
文件字节流
FileInputStream – 以字节形式来读取文件
FileOutputStream – 以字节形式向文件中写数据
FileInputStream:
FileOutputStream:
练习:复制文件统计复制时间
系统流/标准流
系统流都是字节流
System.in 标准输入流
System.out 标准输出流
System.err 标准错误流
System.out和System.err都可以用于打印数据,在打印的时候只是颜色的差别;System.out打印正常结果;System.err打印错误或者异常
了解:对内存操作
总结:
读文件:
a、创建对象
b、准备缓冲区(BufferedReader 不用)
c、定义变量来记录个数或用字符串来记录一行数据
d、读数据
e、关流
写文件:
a、创建对象
b、写数据
c、冲刷缓冲区(FileOutputStream 没有缓冲区)
d、关流
读文件:
写文件: