Day10 知识点总结

//close直接把流关闭 是销毁 没法重启。
//关闭流时,先开先关。
//FilenameFilter

//一次捕获一个异常,对异常进行处理。
//一次捕获多个异常,对多个异常分别处理。
//一次捕获多个异常,对多个异常一次处理。

//转换流
//BufferedInputStream 字节输入缓冲流
//BufferedOutputStream 字节输出缓冲流
//BufferedReader 字符输入流
//BufferedWriter 字符输出流

//BufferedInputStream(InputStream in,int size)(字节输入流交给缓冲区,保存的文件大小)
//read(byte[] b1, int off, int len);
//read(byte[] b1, len);

//close()关流。销毁流。

//使用步骤:
//1.创建字节输入缓冲流对象,指定字节输入流用于读字节数据。
//2.使用一次读取一个自己的模版代码。
//3.使用一次读取多个模版的代码。
//4.关闭流对象。

//BufferedInputStram bis = new BufferedInputStream( new FileInputStream("E;\\a.txt"));
//不能直接char转换因为有些是多个字节的字符转换。

//while(len = bis.read(bytes))!=-1)
//一定要放入数组。

copyFile();
//创建字节输入流,用于读取文件。
//创建字节输出流,用于将读取到的数据写到目标文件中。
//测试两次时间 看两次时间相差多少。
//单字节 是9w多毫秒。
//创建字节缓冲流 ,用于读取字节读取的文件。
//创建字节输出缓冲流,将读取的数据写到目标文件中。
//一次读取一个字节
//缓冲流 是 380毫秒。

//一次读取多个字节
byte[] b1 = new bytes[1024];
//8192 是最完美的  当大于8192 就不是越大越好了。
//819200不是越大越好,因为越大开辟数组也要空间。

//编码表
//字符和编码值 对应的表单,int 和对应的字符。
//在不同的编码表中同一个字符对应的编码值是不一样的。

//三种必用的编码表 
//ascii 编码表 ,英文的对应关系,GBK中文对应的关系 ,UTF-8 所有国家地区常用文字和编码值对应的关系。
//编码,解码,乱码
//编码:将能够看懂的内容翻译成看不懂的内容。字符编码为字节。
//解码:将我们看不懂的东西解码成我们能看懂的内容。字节编码为字符。
//美国:发明ASCII码表来实现。字符固定到对应的编码值。一个字节来描述。
//欧洲:ISO8859-1欧洲的码表。内置ASCII码。一个字节来描述。
//中国:GBK2312版本 两个字节表示一个字符。内置ASCII码。7000多常用简体汉字。
//中国:GBK:现在常用的码表。
//中国:GBK18030:最多字的码表。
//WWW组织:UTF-8码表:国际通用的码表。全世界所有地区常用的字符。Unicode升级版本。

//字符集:
//UTF8,UTF32,UTF16编码GB2312,GB18030某一个码表的体系,有了码表肯定就有了字符集。
//ANSI默认码表。

//创建字符流读取数据。
//FileReader fr = new FileReader ("e:\\demo\\GBK.txt");
//读取数据

//转换流:它可以读写数据时,指定具体码表类型。
//字节转字符,字符转字节。
//InputStreamReader:字节转字符输入流。
//OutputStreamReader:字符转字节输出流。

//Charset 编码表的类
//InputStreamReader 字节转字符输入流。如果不指定默认为utf-8
//一般来说我们用第二个多一些InputStream 读取文件中的数据
//String charsetName 指定编码表名字。
//InputStreamReader(InputStreamReader ,“GBK”);
//OutputStreamWriter (OutputStreamWriter , "UTF-8");

//使用步骤:
//1.创建转换流对象。
//2.写入数据
//3.刷新流
//4.关闭流

//osw.write("使用字符转字节输出转换流");
//字节转字符输入转换流,文件只接受二进制,所以字符转字节写到文件,字节转字符给程序来读取。
//所以只用字符转字节输出流,字节转字符输入流。

//先开先关,不能让先开的流后关,先开的流先关,不然有可能会报错。
//BufferedWriter 高效写入文件
//Writer out 用于底层往文件中写出数据的流(在缓冲区中的数据)
//newLine() 基于当前系统写出一个换行符号 
//BufferedWriter:字符输出缓冲流
//构造方法:特有的成员方法。
//void newLine()写一行分隔符。
//使用步骤:
//1.创建字符输出缓冲流,并指定字符输出流用于写出数据
//2.write
//3.换行的方法,换行符号
//4.刷新 关流

//BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\a.txt"));
//调用write写出方法
//bw.newLine();换行特有方法
//bw.close();
//bw.flush();

//BufferedReader 字符输入缓冲流
//new bw BufferedReader(Reader in ,int out) 用于读取文件中的数据
//bw.readline()一次读取一行数据,特有的成员方法
//字符输入缓冲流readLine 读到null就已经读完了
//String类型的变量 接受读取到的一行数据。
//调用readLine方法一次读取一行数据,将读取的数据赋值给String变量,然后判断为null
//对读取的数据,进行操作

//使用步骤:
//1.创建字符输入缓冲区对象,并指定字符流读取数据
//2.开始使用模版代码读取数据
//3.关流

//出师表 文本排序 用map集合比较适合
//key,value 这个一对数据。前面序号是集合的key值,后面的文本是后面的value值。
//字符输入缓冲流 一次读一行数据。

//使用步骤:
//1.创建字符输入缓冲流。
//2.一次读取一行数据。
//3.将读取到的文件进行分割split[0]序号 ,split[1]内容
//4.将map中的key value进行导入,key会因为hashmap自动排序。
//5.取出集合中的key 和value 然后使用.进行拼接。
//6.使用字符缓冲流,将拼接完成的字符串写到指定的文件中。

//创建对象:类名 对象名 = new 类名();堆中,内存中。当程序结束之后,堆中的对象还在吗?main方法结束后,java虚拟机已经退出,所以对象也就不存在了

//序列化流:
//1.序列化流 ObjectInputStream(InputStream in) 反序列化对象的流,字节输入流。
//2.反序列化 ObjectOutputStream (OutputStream out)序列化对象的流,字节输出流。

//使用步骤:
//1.创建序列化流,并指定字节流用于写出对象数据。
//2.创建一个Person对象。
//3.调用方法WriteObject方法,将person对写到文件中
//4.关闭流

//oos.writeObject(p);
//oos.close();
//NotSerializableException:异常

//必须实现Serializable这个接口,这个接口是序列化接口。标记型接口,实现了这个接口的类才能被序列化。
//实现序列化会导致文件乱码。
//如果有某个属性不希望被序列化。
//实现序列化接口。对象序列化演示:
//ObjectInputStreamer:反序列化流。将序列化出去的对象读取会程序中。
//构造方法:Object readObject()从ObjectInputStream读取一个对象。

//使用步骤:
//1.创建反序列化对象,指定字节输入流读取数据。
//2.调用readObject方法读取对象
//3.打印输出读取的对象信息
//4.关闭流对象

//ObjectInputStream ois = new ObjectInputStream (new FileInputStream("e:\\a.txt"));
//System.out.println("out");
//oos.close();

//1.当某个成员不希望被序列化 直接静态这个成员就可以。
//2.被顺态关键字修饰的成员不会被序列化。
//private transient 静态,瞬态关键字 不会被序列化
//静态和顺态的内容不会被序列化。
//瞬态只有用在序列化流里面。

//private char sex ;
//成员变量的值两个值 里面的uid不一样
//当某个类实现了一个接口之后,当前会根据类中的成员特点计算出uid变量的值
//Serializeable 序列化的流中的数据要手动写入。

//计算出uid变量的值 
//所有成员变量结合uid 根据类的内容来获取。隐式存在。
//当某个对象被writeObject[] 方法会自动将类中的值封装到当前对象中。
//反序列化readObject读取被序列化的对象时,会拿当前对象封装的UID值和类中的UID进行比较,如果UID数值一样则反序列化。
//如果对象中封装的uid和类中的uid不一样则会报错。

//解决反序列化抛出异常的问题UID手动进行定义;给赋值一个固定不变的值。
//private static final long serialVersionUID = 1234566797984561l;

//开发中序列化的使用,将需要序列化的对象,保存到集合中,然后将集合对象序列化即可,反序列化,反序列保存对象的集合即可。
//PrintStream 打印流
//PrintStream ps = new PrintStream("d:\\a.txt");
//ps.println("我的奋斗");
//特点:流中没有IO异常。
//PrintStream (String filename)
//write写入数据。

//使用步骤:
//1.创建打印流对象,并指定文件路径
//2.调用print方法,用write方法打印数据
//3.关流

//PrintStream ps = new PrintStream(d:\\a.txt);
//ps.write(97);
//ps.close();
//ps.System.outset("d:\\a.txt");
//成员方法write方法 ---->进行解码
//print方法 ---->直接打印输出的数据。

猜你喜欢

转载自blog.csdn.net/u014452148/article/details/85927558