当前位置: 首页 > news >正文

做网站的的需求文档网站信息维护方案

做网站的的需求文档,网站信息维护方案,网站建设傲,网页搜索关键词背景了解#xff1a;java中存在IO流的方式#xff0c;支持我们对文件进行读取#xff08;Input#xff0c;从磁盘到内存#xff09;或写入#xff08;output#xff0c;从内存到磁盘#xff09;#xff0c;那么我们在面对 “zip”格式或者 “rar” 格式的压缩文件java中存在IO流的方式支持我们对文件进行读取Input从磁盘到内存或写入output从内存到磁盘那么我们在面对 “zip”格式或者 “rar” 格式的压缩文件又如何去解析使用。下面一起学习交流 所用知识点1.java的util包下的ZipInputStream : 读取zip文件流 第三方类库 commons-io-2.16.1.jar junrar-7.5.5.jar slf4j-api-2.0.13.jar  百度网盘第三方类库下载地址链接https://pan.baidu.com/s/1iKPh6HruC70nb8rPn99pRQ?pwd1111  提取码1111 1.解析 “zip” 格式的文件 主题思路首先根据 “zip” 格式的文件的原始路径创建对应的File对象拿到其根目录通过exists方法判断根目录是否存在如果存在就删除重新创建再读取子内容包括子文件子目录分别创建对应的子文件子目录并将子文件的内容写入 重点知识点1.ZipInputStream:用于进行zip格式压缩文件的输入流(读取) 2.zipEntry:用于表示 zip 文件条目。 1.先根据文件的原始路径创建File对象得到其根目录 getParent获取其父级路径 substring(0,sourceFileName.lastIndexOf(.)负责拼接文件的文件名去掉其 “.zip后缀 //根据原始路径字符串创建源文件File对象 //path文件的原始路径 File sourceFile new File(path);//根目录 String sourceFileName sourceFile.getName(); File rootDir new File(sourceFile.getParent()\\sourceFileName.substring(0,sourceFileName.lastIndexOf(.))); 2.判断其创建的根目录是否存在如果存在就删除重新创建 注意删除时java自带的delete方法只能删除空目录当目录内部用其他子文件时需使用第三方类库删除 第三方类库的删除方法导入commons-io-2.16.1.jar FileUtils.deleteDirectory(rootDir) 无论目录是否为空都可删除 此方法参数为要删除的目录文件对象 //判断要创建的目录是否存在if(rootDir.exists()) {//如果存在就删除重新创建//rootDir.delete();//要求只能删除空目录//第三方类库删除try {FileUtils.deleteDirectory(rootDir);} catch (IOException e) {e.printStackTrace();}} 3.重新创建新的根目录 //重新创建或创建根目录rootDir.mkdir(); 4.读取子内容子文件子目录如果为子目录就创建为子文件就创建写入 getNextEntry()  读取下一个zip文件条目并将该流定位在条目数据的开头。 返回值下一个zip文件条目如果没有更多条目则返回null。 首先呢上面我们说过了ZipInputStream用于进行zip格式的压缩文件的输入流我们先用ZipInputStream对zip文件进行读取操作然后呢遍历其内部的子文件或者子目录而ZipEntry对象又表示为zip压缩格式文件内部的文件条目。所以我们先创建一个ZipEntry对象通过getNextEntry()方法不断用循环获取其文件条目 再拿到一个文件条目时创建其对应的File对象并判断是子文件还是子目录判断时用到的一定是zipEntry对象而不是创建的File对象 如果是子目录通过mkdir(),创建子目录 如果是子文件先创建子文件再通过文件输出流FileOutputStream写入文件内容。 try (ZipInputStream in new ZipInputStream(new FileInputStream(sourceFile));){//遍历压缩包中的每个子文件或者子目录ZipEntry类型的对象ZipEntry zipEntry null;while((zipEntry in.getNextEntry()) ! null) {System.out.println(zipEntry.getName());//创建子目录或者子文件file对象File file new File(rootDir.getPath()\\zipEntry.getName());if(zipEntry.isDirectory()) {//物理磁盘创建子目录file.mkdir();}else {//物理磁盘创建子文件file.createNewFile();//此处不能用用后会将ZipInputStream创建的流关闭导致getNextEntry()无法继续使用//FileUtils.copyInputStreamToFile(in, file);//读取内容并写入try(FileOutputStream out new FileOutputStream(file)){byte[] buff new byte[1024];int len -1;while((len in.read(buff))!-1) {out.write(buff,0,len);}}}}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}} 2.解析 “rar” 格式的文件 1.先根据文件的原始路径创建File对象得到其根目录 2.判断其创建的根目录是否存在如果存在就删除重新创建 此部分内容与解析 “.zip” 格式压缩文件的内容一致不再做详细描述 //1.创建解压后的根目录File rarfile new File(path);File rootDir new File(rarfile.getParent()\\rarfile.getName().substring(0,rarfile.getName().lastIndexOf(.)));if(rootDir.exists()) {try {FileUtils.deleteDirectory(rootDir);} catch (IOException e) {e.printStackTrace();}}//创建根目录rootDir.mkdir(); 3.读取 “rar” 格式压缩文件内容 在读取 “rar” 格式压缩文件时我们需用到第三方类库 junrar-7.5.5.jar 用于解析 “rar” 格式的压缩文件 slf4j-api-2.0.13.jar junrar的jar中某个类依赖此jar包 首先我们需要知道在解析“rar” 的jar中为我们提供了一个类 Archive用于读取rar压缩文件格式 内部实现逻辑也是通过文件输入流进行读取所以内部还是先通过FileInputStream读取 1先通过创建Archive对象读取rar压缩文件 2在读取后archive并没有提供任何read方法让我们读取而是依靠 getFileHeader让我们获取到所以的子目录或者子文件但是时FileHeader类型的对象返回值为一个FileHeader类型的list集合 3在获取的list集合所有的子文件或者子目录的顺序是乱序的所以我们需要对此list进行排序用到了sort的选择器此部分学习参考我帖子的 java接口及其应用场景_java接口的应用场景-CSDN博客 4在排序完成后我们对其遍历通过创建其对应的File对象判断是子文件还是子目录 子目录通过mkdir方法创建 如果是子文件先创建子文件再通过第三方类库的commons-io-2.16.1.jar 的  FileUtils.copyInputStreamToFile(in, file);   复制文件输入流至新子文件 //创建Archive对象用于读取rar压缩文件格式try (Archive archive new Archive(new FileInputStream(path));){//获取压缩文件中所有的子目录或子文件FileHeader对象ListFileHeader fileHeaders archive.getFileHeaders();//按照子目录或者子文件名称排序fileHeaders.sort(new ComparatorFileHeader() {Overridepublic int compare(FileHeader o1, FileHeader o2) {return o1.getFileName().compareTo(o2.getFileName());}});for(FileHeader fd: fileHeaders) {System.out.println(fd.getFileName());File file new File(rootDir.getParent()\\fd.getFileName());if(fd.isDirectory()) {//创建新子文件file.mkdir();}else {//创建新子目录file.createNewFile();//获取压缩包中的子文件流InputStream in archive.getInputStream(fd);//复制文件输入流至新子文件FileUtils.copyInputStreamToFile(in, file);}}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (RarException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} }
http://www.dnsts.com.cn/news/73612.html

相关文章:

  • 如何在网上接做网站的小项目网站建设程序员招聘
  • 国外门户网站源码图门市建设局网站
  • 南京网站制作开发django 开放api 做网站
  • 国外最新创意产品网站有哪些方面网络营销方式有哪些各方式的优缺点有哪些
  • 软件开发一般要多少钱南昌seo优化公司
  • 网站建设捌金手指下拉十七泰州seo外包
  • 3d模型资源哪个网站比较好wordpress设置手机主题
  • 排名推广网站恐怖网站代码
  • 购买链接怎么买wordpress插件检测seo是否合理
  • 厦门网站建设团队小众写作网站
  • 南京企业网站开发公司wordpress自己弄博客
  • 站长之家官网查询烟台高端网站建设公司
  • 企业网站建设网站优化平台公司和项目公司的区别
  • 西部数码做的网站打不开wordpress虚拟资源
  • 上海网站建设规划郑州做网站云极
  • 漳州网站建设网站制作做网站大概多少
  • 做网站要钱嘛北京seo关键词排名优化软件
  • 做英文企业网站wordpress模板商店
  • 只做原创内容平台网站制作视频的手机软件
  • c# 手机版网站开发代做网站多少钱
  • 如何做网站的后台管理提供网站建设电话
  • 哪里做网站比较快jianux wordpress
  • 新手学做网站pdf下载企业网站建设的要求
  • 学校网站建设的必要性建立网站费用多少
  • 网站建设得缺点翡翠原石网站首页怎么做
  • 做网站被骗预付款怎么办网站搜什么关键词好
  • wordpress网站框架wordpress产品发布插件
  • 长春好的做网站公司云优化seo
  • 做任务赚佣金的网站wordpress微型SEO商城
  • 做网站生意做导航网站不侵权吗