存储&读写数据的方案
1 存储数据的方案
变量,数组,对象,集合创建出来的数据容器都是存放在内存当中,一旦关闭程序或者断电,数据就会丢失;
File:文件可以长久保存数据;文件在电脑磁盘当中保存,即便关闭程序或者断电,文件当中的数据也不会丢失;
注意:File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件,也可以是文件夹);File只能对文件本身进行操作,不能读写文件当中存储的数据;
IO流:用于读写数据(可以读写文件,也可以读写网络中的数据);
绝对路径和相对路径:
绝对路径带盘符;相对路径不带盘符,默认到工程下寻找文件(推荐);
递归算法:递归算法的三要素:递归的公式;递归终点;递归公式必须走向递归终点;
2 字符集
标准ASCII字符集:美国信息交换标准代码,包括了英文,符号等;标准ASCII使用一个字节存储一个字符,首位是0,因此,总共可以表示128个字符;
GBK:(汉字内码扩展规范,国标)
汉字编码字符集,包含了两万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储;
注意:GBK兼容了ASCII字符集;且规定汉字的第一个字节必须是1(总共可以表示2的15次方的字符);
Unicode字符集:统一码,也叫万国码
Unicode是国际组织制定的,可以容纳世界上的所有文字,符号的字集;
UTF-8字符集:是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区,一个字节,两个字节,三个字节,四个字节;英文字符,数字等只占用一个字符(兼容ASCII编码),汉字占用三个字节;
3 IO流
IO流的作用? 读写文件数据
IO的分类以及其作用?字节输入流(InputStream),读字节数据;字节输出流(OutputStream),写字节数据出去;字符输入流(Reader),读字符数据;字符输出流(Writer),写字符数据出去;
实现类分别为:
文件字节输入流(FileInputStream),以内存为基准,可以把磁盘文件当中的话数据以字节的形式读入到内存当中;
文件字节输出流(FileOutputStream),以内存为基准,可以把内存中的数据以字节的形式写出到磁盘文件当中;
文件字符输入流(FileReader),以内存为基准,可以把文件当中的话数据以字符的形式读入到内存当中;
文件字符输出流(FileWriter)),以内存为基准,可以把内存中的数据以字符的形式写出到磁盘文件当中;
缓冲字节输入流(BufferedInputStream):可以提高字节输入流读取数据的性能(自带8KB缓冲池);
缓冲字节输出流(BufferedOutputStream):可以提高字节输出流写字节的性能(自带8KB缓冲池);
缓冲字符输入流(BufferedReader):可以提高字节输入流读取数据的性能(自带8KB缓冲池);
缓冲字符输出流(BufferedWriter):可以提高字节输出流写字符的性能(自带8KB缓冲池);
字符输入转换流(InputStreamReader):解决不同编码时,字符流读取文本内容乱码的问题;解决的思路:先获取文件的原始字节流,再将其按照真实的字符集编码转成字符输入流,这样字符输入流当中的字符就不会出现乱码;
打印流(PrintStream/PrintWriter):打印流可以实现更方便,更高效的打印数据出去,能实现打印啥出去就是啥出去;
数据输出流(DataOutPutStream):允许把数据和其类型一起写出去;