黑马程序员-IO流学习笔记-2

来源:互联网 发布:评价算法性能的标准 编辑:程序博客网 时间:2024/06/01 10:49

1、IO流实现文件的拷贝

问题:如何把C盘的文件复制到D盘中?

复制原理:1、在D盘创建一个文件进行存储数据;

    2、定义读取流和C盘中的文件关联;

    3、通过不断地读取和写入完成数据存储;

    4、关闭资源。

示例代码:

1)用read()和writer()方法,每读一个文件中的字符,就往目标文件写一个字符

import java.io.*;public class FileCopyDemo {public static void main(String args[])throws IOException{FileWriter fw=new FileWriter("D:\\Demo_Copy.txt");//定义文件存储目的地FileReader fr=new FileReader("C:\\Demo.txt");//与已有文件关联int ch=0;while((ch=fr.read())!=-1)//程序每读一个C盘文件中的字符,就会往D盘的目标文件写一个字符{fw.write(ch);}fw.close();fr.close();}}

2)如果文件较大的话,用方法1)会大大降低存储效率,如果利用IO流提供的缓冲存储的方式,可以先将文件中的数据读取到缓冲当中,再一并写入到目标文件中,这样可以大大提高存储速度。

示例代码:

package twentytwoApril;import java.io.*;public class FileCopyDemo {public static void main(String args[]){FileWriter fw=null;FileReader fr=null;try{fw=new FileWriter("D:\\Demo_Copy.txt");fr=new FileReader("C:\\Demo.txt");char[] buf=new char[1024];//定义一个数组缓冲区,存储读取出的数据int len=0;while((len=fr.read(buf))!=-1){fw.write(buf,0,len);//将缓冲区的数据写入到目标文件中}}catch(IOException e){throw new RuntimeException("文件读写失败");}finally{if(fr!=null)try{fr.close();   }catch(IOException e){}if(fw!=null)try{fw.close();}catch(IOException e){}}}}

2、字符流的缓冲区

缓冲区的出现是为了提高对文件读写的效率

缓冲区所对应的类:BufferedWriter,BufferedReader分别是Writer类和Reader类的子类。

缓冲区要结合流才能使用:BufferedWriter(Writer out)   ,    BufferedWriter(Writer out  ,  int  sz) ,BufferedReader(Reader in),BufferedReader(Reader in,  int  sz)

缓冲区使用前提:必须存在一个流对象。

缓冲区的使用方法:只需要将定义好的流对象作为一个参数传递给对应的缓冲区对象的构造函数即可,缓冲区对象也同样可以使用其父类所提供的方法,如writer(),reader()等等。

代码片段:FileWriter fw=new FileWriter("xxx.*");

    BufferedWriter bufw=new BufferedWriter(fw);

BufferedWriter类所提供的一个新方法:newLine() ,作用是写入一个行分隔符,它的优点在于跨平台性

BufferedReader类所提供的一个新方法:readLine() ,作用是能够对文件的一行进行读取,当读到文件末尾的时候,返回null


3、使用缓冲区进行文件复制

可以使用readLine方法进行读取文件,以提高读取速度,需要注意的是readLine方法返回的时候只返回回车符之前的内容,并不返回回车符,所以在进行数据写入的时候,要加上newLine方法

4、readLine方法的原理

readLine方法其实是基于read方法,它在内存中创建了一个字符串数组,用read方法读取文件一行的字符存到数组中,当遇到回车"\r\n"字符的时候,返回已经存到数组中的文件中某一行的字符。

5、装饰设计模式

当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有功能并提供加强功能,自定义的该类成为装饰类。

装饰设计模式和继承的对比:

1)装饰设计模式是使用构造函数进行参数传递,来增强已有功能;

2)如果为了增加某个功能而产生子类(使用继承),那么这个体系会变得臃肿;

3)装饰类要比继承更加灵活,装饰类只是用来增强已有对象的功能,它们属于同一个体系,所以避免了继承体系的臃肿,而且降低了类与类的关系



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信手机登录收不到验证码怎么办 淘宝店的宝贝没有尺码选项怎么办 淘宝账号被保护要自助开通怎么办 小米平板经常出现系统无响应怎么办 淘宝买家被取消运费险了怎么办 新开的淘宝直播店没有流量怎么办 淘宝买的东西一直不发货怎么办 在淘宝上买了东西不发货怎么办 宝贝好几天拉一次吃的也少怎么办 淘宝快递正在运输途中想退货怎么办 淘宝买的东西退货商家拒收怎么办 手机屛上出现了微信图标怎么办 手机用了两年了反应太慢怎么办 魅族手机显示手机已锁定怎么办 为什么微信注册要安全验证码怎么办 微信帐号异常无法领取红包怎么办 帮朋友代付在支付宝被骗怎么办 商家说未收到货拒绝退款怎么办 淘宝商家拒绝退款怎么办还没收货的 拼多多点错确认收货了怎么办 被别人用菜刀砍伤没钱看病怎么办 东京下了订单但不发货怎么办 绑定卷皮钱包的手机号码丢了怎么办 小孩回奶在垫的被子上发霉了怎么办 2个月宝宝不喝母乳只喝奶瓶怎么办 我的扣扣被盗了朋友别被骗了怎么办 我买的股票退市了我的钱怎么办啊 在美食林被门口买宝石的骗了怎么办 在商场买的彪马鞋子皮子裂了怎么办 手机换号了京东钱包里的余额怎么办 寄报销发票给顺丰快递搞丢了怎么办 物流显示揽件但把快递弄丢了怎么办 在李宁商城上买的东西丢了怎么办 我的货发物流都过了好几天怎么办 运动鞋子买小了一码有些挤脚怎么办 媳妇先动手打我我又打媳妇了怎么办 京东商城买个电视没验收破了怎么办 钱充给波克城市游戏还不能玩怎么办 我的魅族账号密保问题忘记了怎么办 在手机店买手机买贵了被骗了怎么办 信翼4g上网宝登录密码忘了怎么办