还有就是视频中复制一个文件和复制一个文件夹下的文件,之间有什么逻辑关系?有些搞不清。因为在复制整个文件夹文件的时候是调用了,复制一个文件的copyFile().
老师好,这个程序里面小写的file到底是什么意思。我的理解里面就是一个变量的名称,为什么在代码中进行一直使用呢(file.getName)就表示文件名,是有什么其他的意思么?(整个程序是没有错误的,正常运行的)下面是我问题的地方和我的代码
package com.io; import java.io.*; public class TestCopy { public static void main(String[]args){ /**File srcFile =new File("/Users/pain_/Downloads/world.docx"); File targetFile =new File("/Users/pain_/Desktop/world.docx"); //调用复制文件的方法 cpoyFile(srcFile,targetFile); */ File srcDir =new File("/Users/pain_/Downloads/xyyyy"); File targetDir =new File("/Users/pain_/Desktop/xyyyy"); copyDir(srcDir,targetDir); } public static void copyDir(File srcDir,File targetDir){ //判断目的地文件是否存在通过exists() if(!targetDir.exists()){ targetDir.mkdir();//如果目的地不存在,需要使用File类的mkdir()方法进行创建目录 } //list()方法是返回某个目录下的所有文件和目录的文件名,返回的是String数组 //listFiles()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组 File[] files = srcDir.listFiles(); //加强for循环 //for (循环变量类型 循环变量名称 : 要被遍历的对象) 循环体 for(File file:files) { if (file.isFile()) { //是文件复制,目录先不管,需要复制srcDir的目录下的指定文件的具体的文件 copyFile(new File(srcDir + "/" + file.getName()), new File(targetDir + "/" + file.getName())); }else{ //继续调用该方法,使用递归实现 copyDir(new File(srcDir + "/" + file.getName()), new File(targetDir + "/" + file.getName())); } } } public static void copyFile(File srcFile, File targetFile){ //提高读取效率,从数据源 BufferedInputStream bis = null; BufferedOutputStream bos = null; try { bis = new BufferedInputStream(new FileInputStream(srcFile)); //提高读取效率,写到目的地 bos = new BufferedOutputStream(new FileOutputStream(targetFile)); //边读边写 byte [] buf =new byte[1024];//中转站 int len =0;//用于存储读到的字节的个数 while((len=bis.read(buf))!=-1){ bos.write(buf,0,len); } } catch (IOException e) { e.printStackTrace(); }finally { //关闭 if(bos!=null) { try { bos.close(); } catch (IOException e) { e.printStackTrace(); } }if(bis!=null){ try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
老师为什么数字太多了会显示乱码?或者是添加空格都是乱码
为什么第26行,手动刷新的flush方法是bos的
不要让两个对象同时持有对象锁,采用互斥方式来解决 视频里的这句话我不是特别理解,不要让两个对象,哪两个对象?线程对象吗?互斥方式具体指的是什么?
我不太明白,服务端线程中,这个变量的意义
private boolean flag = true; //如果流出现异常,程序还需要继续
老师,TreeMap的底层实现好难理解,听不懂啊
我建议在最后删除头和尾那块,指向区域画好一点吧,后面都看不到懂指向哪了
用字符串输出会出错
我a文件内容是abcdef 像我这个第19 20行这么写,先判断读取的文件到没到最后,再赋值给a输出为什么结果是bdf呢
IO流不是使用的是装饰设计模式吗?
在此贴出装饰设计模式和静态代理模式的区别:
装饰器模式关注于在一个对象上动态地添加方法,而代理模式关注于控制对对象的访问。换句话说,用代理模式,代理类可以对它的客户隐藏一个对象的具体信息。因此当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例;当使用装饰器模式的时候,我们通常的做法是将原始对象作为一个参数传给装饰器的构造器。
装饰器模式和代理模式的使用场景不一样,比如IO流使用的是装饰者模式,可以层层增加功能。而代理模式则一般是用于增加特殊的功能,有些动态代理不支持多层嵌套。
代理和装饰其实从另一个角度更容易去理解两个模式的区别:代理更多的是强调对对象的访问控制,比如说,访问A对象的查询功能时,访问B对象的更新功能时,访问C对象的删除功能时,都需要判断对象是否登陆,那么我需要将判断用户是否登陆的功能抽提出来,并对A对象、B对象和C对象进行代理,使访问它们时都需要去判断用户是否登陆,简单地说就是将某个控制访问权限应用到多个对象上;而装饰器更多的强调给对象加强功能,比如说要给只会唱歌的A对象添加跳舞功能,添加说唱功能等,简单地说就是将多个功能附加在一个对象上。
所以,代理模式注重的是对对象的某一功能的流程把控和辅助,它可以控制对象做某些事,重心是为了借用对象的功能完成某一流程,而非对象功能如何。而装饰模式注重的是对对象功能的扩展,不关心外界如何调用,只注重对对象功能加强,装饰后还是对象本身。
链接:https://www.cnblogs.com/yanggb/p/10952843.html
划横线的是已经删除 hello 和 123 元素,程序按照从上往下执行,这两个已经被删除了,但是为什么list.add(“world”)的时候,hello 和123 元素还在 ?
老师我是按步骤配置的,但是打开就闪退,老师看看这个环境变量是否有问题
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637