范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Hutool实现IO相关操作IOUtilFIleUtilFileTypeUtil等操作三

  今日分享
  每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您。
  架构开源地址:https://gitee.com/msxy
  评论转发Hutool概述
  IO的操作包括 读 和 写 ,应用场景包括网络操作和文件操作。IO操作在Java中是一个较为复杂的过程,我们在面对不同的场景时,要选择不同的 InputStream  和 OutputStream  实现来完成这些操作。而如果想读写字节流,还需要 Reader  和 Writer  的各种实现类。这些繁杂的实现类,一方面给我我们提供了更多的灵活性,另一方面也增加了复杂性。 IO封装
  io包的封装主要针对流、文件的读写封装,主要以工具类为主,提供常用功能的封装,这包括: IoUtil   流操作工具类 FileUtil   文件读写和操作的工具类。 FileTypeUtil   文件类型判断工具类 WatchMonitor   目录、文件监听,封装了JDK1.7中的WatchService ClassPathResource  针对ClassPath中资源的访问封装 FileReader   封装文件读取 FileWriter   封装文件写入 IO工具类-IoUtil
  流的读写可以总结为从输入流读取,从输出流写出,这个过程我们定义为 拷贝 。这个是一个基本过程,也是文件、流操作的基础。  /**      * 文档拷贝      */     @Test     public void copy(){         BufferedInputStream in = FileUtil.getInputStream("D:hometest.txt");         BufferedOutputStream out = FileUtil.getOutputStream("D:hometest2.txt");         long copySize = IoUtil.copy(in, out, IoUtil.DEFAULT_BUFFER_SIZE);     } 文件工具类-FileUtills   列出目录和文件 touch   创建文件,如果父目录不存在也自动创建 mkdir   创建目录,会递归创建每层目录 del   删除文件或目录(递归删除,不判断是否为空),这个方法相当于Linux的delete命令 copy   拷贝文件或目录这些方法提供了人性化的操作,例如 touch  方法,在创建文件的情况下会自动创建上层目录
  列出目录和文件  /**      *  列出目录和文件      */     @Test     public void ls(){         File[] files = FileUtil.ls("D:home");         for (File f:files) {             System.out.println(f.getName());         }     }
  创建文件/**      * 创建文件,如果父目录不存在也自动创建      */     @Test     public void touch(){         File file = FileUtil.touch("D:homeqingfeng.txt");         System.out.println(file.getName());     }
  创建目录/**      * 创建目录,会递归创建每层目录      */     @Test     public void mkdir(){         File file = FileUtil.mkdir("D:homeqingfengdata");         System.out.println(file.getName());     }
  删除文件或目录/**      * 删除文件或目录(递归删除,不判断是否为空),这个方法相当于Linux的delete命令      */     @Test     public void del(){         boolean bol = FileUtil.del("D:homeqingfengdata");         System.out.println(bol);     }
  FileUtil拷贝 /**      * 文件拷贝      */     @Test     public void copyFile(){         File path = FileUtil.copy(new File("D:homeqingfeng.txt"),new File("D:homeqingfeng123.txt"),true);         System.out.println(path);     }文件类型判断-FileTypeUtil
  在文件上传时,有时候我们需要判断文件类型。但是又不能简单的通过扩展名来判断(防止恶意脚本等通过上传到服务器上),于是我们需要在服务端通过读取文件的首部几个二进制位来判断常用的文件类型。     /**      * 获取文件类型      */     @Test     public void getFileType(){         File file = FileUtil.file("D:homeqingfeng.txt");         String type = FileTypeUtil.getType(file);         System.out.println(type);     } 文件读取-FileReader
  FileReader提供了以下方法来快速读取文件内容: readBytes  readString  readLines  同时,此类还提供了以下方法用于转换为流或者BufferedReader: getReader  getInputStream  /**      * 文件读取-FileReader      */     @Test     public void FileReader(){         //默认UTF-8编码,可以在构造中传入第二个参数做为编码         FileReader fileReader = new FileReader("D:homeqingfeng.txt");         String result = fileReader.readString();         System.out.println(result);  //        byte[] readBytes = fileReader.readBytes(); //        for (Byte str:readBytes) { //            System.out.println(str); //        }          List readLines = fileReader.readLines();         for (String str:readLines) {             System.out.println(str);         }      } 文件写入-FileWriter
  此类提供了: getOutputStream  getWriter  getPrintWriter  这些方法用于转换为相应的类提供更加灵活的写入操作。   /**      * 文件写入-FileWriter      */     @Test     public void FileWriter(){         FileWriter writer = new FileWriter("D:homeqingfeng.txt");         writer.write("test");         writer.append("123");     } 文件监听-WatchMonitor
  在Hutool中, WatchMonitor  主要针对JDK7中 WatchService  做了封装,针对文件和目录的变动(创建、更新、删除)做一个钩子,在 Watcher  中定义相应的逻辑来应对这些文件的变化。
  WatchMonitor  提供的事件有: ENTRY_MODIFY   文件修改的事件 ENTRY_CREATE   文件或目录创建的事件 ENTRY_DELETE   文件或目录删除的事件 OVERFLOW   丢失的事件这些事件对应 StandardWatchEventKinds  中的事件。  /**      * 文件监控-WatchMonitor      */     public static void main(String[] args) {         File file = FileUtil.file("D:homeqingfeng.txt");         //这里只监听文件或目录的修改事件         WatchMonitor watchMonitor = WatchMonitor.create(file, WatchMonitor.ENTRY_MODIFY);         watchMonitor.setWatcher(new Watcher(){             @Override             public void onCreate(WatchEvent<?> event, Path currentPath) {                 Object obj = event.context();                 System.out.println("创建:"+currentPath+"-> "+obj);             }             @Override             public void onModify(WatchEvent<?> event, Path currentPath) {                 Object obj = event.context();                 System.out.println("修改:"+currentPath+"-> "+obj);             }             @Override             public void onDelete(WatchEvent<?> event, Path currentPath) {                 Object obj = event.context();                 System.out.println("删除:"+currentPath+"-> "+obj);             }             @Override             public void onOverflow(WatchEvent<?> event, Path currentPath) {                 Object obj = event.context();                 System.out.println("Overflow:"+currentPath+"-> "+obj);             }         });         //设置监听目录的最大深入,目录层级大于制定层级的变更将不被监听,默认只监听当前层级目录         watchMonitor.setMaxDepth(3);         //启动监听         watchMonitor.start();     }ClassPath资源访问
  在Java编码过程中,我们常常希望读取项目内的配置文件,按照Maven的习惯,这些文件一般放在项目的 src/main/resources  下,读取的时候使用:  /**      * 读取配置的资源文件      * @throws IOException      */     @Test     public void ClassPathResource() throws IOException {         ClassPathResource resource = new ClassPathResource("test.properties");         Properties properties = new Properties();         properties.load(resource.getStream());         System.out.println(properties);     }

淡马锡增持Robinhood沽清Uber腾讯音乐新加坡国营投资机构淡马锡(Temasek)向美国SEC提交的文件披露,淡马锡上季增持多只在美国上市的消费相关股份,包括东南亚网约车平台Grab美国网上证券商Robinhood零售商汉字转拼音ChinesetoPinyin从网上找的资料,记得以前在C中曾经用过这类资料,保存下来以后再进一步测试和应用。一引入maven依赖dependencygroupIdcom。belerwebgroupIdpiny如果被困电梯怎么办?开门见山地说吧,如果被困电梯,我们应该采取如下措施首先请保持镇定。电梯槽都有防坠安全装置,会牢牢夹住电梯两旁的钢轨。只要电梯没有解体,那么这个狭小的空间将会成为暂时的庇护所。然后立怎样下载头条中的视频音乐?需要注意哪些问题?首先感谢邀请!关于如何下载头条中的视频音乐,我曾经回答过类似的提问,今天再次作答,并加以完善和补充方法一通过今日头条APP下载1在播放音乐视频的页面中,点击右下角的分享按钮,朝右滑大家都去哪个交友网站?我之前用的IUDating和我老婆认识的,上面都是些真是的单身人士可以在线翻译180余个国家语言。满意我的回答吗?如果满意请采纳下交友软件的话,放在以前,最火的社交平台估计是百合网年薪4亿的中国最贵科技CEO是谁?我们对高管薪资做了个排行科股头条虎年开年,有关财富和自由的话题热度不减。市值均值超过百亿的科技巨头们,如何给高管发年薪?中国科技公司的高管薪资水平,对于大多数投资人而言也是谜一般的存在。去年,联想CEO杨元庆1。网易QQ之外,听音乐的第三个选择最近换了手机需要重新下载个音乐软件用来听歌,但在下载的时候出现了犹豫。以前基本都是用网易云音乐,但网易在最近一年的更新后感觉越来越不靠谱了。增加了大量用不到的功能,导致软件初始大小利用变更数据采集(CDC)同步数据库(2)这是关于变更数据采集(CDC)系列的第二部分。在这篇文章中,让我们讨论CDC的使用案例,并看看有哪些工具可以帮助你把CDC添加到你的架构中。变更数据采集有助于实现事件驱动的应用架构免费通用数据库工具DBeaver,替代收费的Navicat官网介绍通用数据库工具免费的多平台数据库工具,适用于开发人员数据库管理员分析师和所有需要使用数据库的人。支持所有流行的数据库MySQLPostgreSQLSQLiteOracleD华为很给力,鸿蒙Os35000mAh,16512G大存储自从美国修改规则后,大家会看到华为手机业务的更新速度十分缓慢,而且据相关数据还显示,华为手机的整体销量还出现了严重下滑状态,虽然目前还能取得国内销量第四名的好成绩,但华为海思麒麟手错过AMD前女友,英特尔宣布54亿美元收购Tower半导体IT之家2月15日消息,去年7月,华尔街日报称知情人士表示,半导体巨头英特尔正在考虑以300亿美元(约2000亿人民币)的价格收购美国晶圆代工厂商格芯(GlobalFoundrie
澎湃芯片卷土重来?澎湃c1仅是一颗isp,难堪大用沉寂已久的小米澎湃芯片终于有了新动作!在3月30日的小米新品发布会上,雷军高调发布了一款小米澎湃芯片,然而这款芯片并不是众所期待的澎湃s2,而是c1,澎湃c1是一颗图像处理芯片,这中兴首发第二代屏下摄像头技术,3d结构光引领真全面屏时代曾经作为国产手机中华酷联之首的中兴手机早已不复当年的雄风,近年来的市场份额和影响力日益减少,但是瘦死的骆驼比马大,首发5g手机的中兴通讯仍然拥有强大的技术研发能力,而且其十分重视对神机确认升级鸿蒙系统,鸿蒙OS即将全面上线,未来不可限量在华为matex2发布会上,华为消费者业务ceo余承东表示要在今年四月份全面上线鸿蒙手机系统正式版,近日,华为鸿蒙系统负责人王成录也确认了这一消息,他还透露除了华为旗舰手机以外其他win11发布,同样兼容安卓,难道也是换皮?鸿蒙OS2毋庸置疑备受关注的华为鸿蒙操作系统2。0正式版终于在6月2日正式发布了,这是一款华为研发了十年之久的国产自主操作系统,为此华为投入了5000位研发人员和无数的财力物力,如今的成果来之不易,谷歌自研5纳米处理器,补齐短板,华为全力突破,未来三足鼎立得益于iphone12的大卖,苹果在2020年重新成为全球第一大智能手机厂商,iphone再度成为全球销量最大的智能手机。与iphone的春风得意相比,安卓阵营的颓势则十分明显,不因4S店提车加价,女子跳楼维权,网友4S店该被淘汰了汽车是如今受到芯片短缺影响最大的行业之一,因此许多车型的售价也有所上涨。环境如此,消费者购车时也只能接受。不过,如果是已经签好了协议,提车时临时加价,恐怕情况就大不相同了。近日,合IOS14。7正式版跑分总的来说,相对14。6版本,iphone8和12pro均有一些下降,但下降幅度较小,基本可认为持平。另外发热问题,12pro有些许改善玄学警告,在外面太阳光下还是会出现屏幕亮度变低墨迹天气版本升级了?这可能是全网最全的功能评测近日,墨迹天气对外宣布正式发布最新的9。0版本。作为10年的资深老粉,笔者迫不及待的尝鲜体验了一把。不得不说,新版本在视觉设计预报服务及用户体验方面都较前一版有了较大的改变,整体感蒋凡被拟认定为杭州高层次人才,网友不淡定了看来出轨都是小事最近一段时间,淘宝天猫总裁蒋凡又获得了新的荣誉他被被认定为杭州高层次人才,并且被公示期三天,今天是12月25日,也就是公示的最后一天。这个公示是杭州人社局两天前12月23日发布的,杭州女孩恋爱7年做人流6次,后来又怀孕了,男友的母亲说话了现在,随着社会越来越开放,很多年轻人在找对象的时候不再介意对方之前是否有过恋爱经历,因为多数年轻人最后结婚的配偶,都不是自己的第一次。不过也有些年轻人谈恋爱也就罢了,而且还多次怀孕杭州小学生书包里多了一本性教育知识手册有孩子当小黄书看最近几年,不少专家呼吁要对小学生进行性教育,这样对孩子有好处。当然了,专家这么说可能是有道理的,而且一些地方的小学也已经开始引进性教育方面的科普课程了,但是这里面也有一个尺度的问题