listFiles方法接受一个FileFilter对象,这个FileFilter对象就是过虑的策略对象,不同的人提供不同的FileFilter实现,即提供了不同的过滤策略。

//将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad

packagecom.file;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.FilenameFilter;importjava.io.IOException;public classChangeFileName {public static void main(String[] args) throwsException {

File srcDir=new File("java");if(!(srcDir.exists()&&srcDir.isDirectory())){throw new Exception("目录不存在!");

}

File[] files=srcDir.listFiles(newFilenameFilter(){public booleanaccept(File dir, String name) {return name.endsWith(".java");//过滤后缀名为.java的文件

}

}

);

System.out.println(files.length);

File deskDir=new File("jad");if(!(deskDir.exists()))

deskDir.mkdir();//目录不存在创建一个新目录for(File file : files) {

FileInputStream fis=newFileInputStream(file);

String deskFileName=file.getName().replace("\\.java$", ".jad");//更改文件后缀名

FileOutputStream fos=new FileOutputStream(newFile(deskDir,deskFileName));//创建一个要写入的目标文件

copy(fis,fos);

fis.close();

fos.close();

}

}

//将文件从一个文件复制到另一个文件public static void copy(FileInputStream fis,FileOutputStream fos) throwsIOException{byte[] buf=new byte[1024];int len=0;if((len=fis.read(buf))!=-1){

fos.write(buf,0, len);

}

}

}

将每个文件复制到另外一个目录,并改扩展名

得到目标目录,如果目标目录不存在,则创建之

根据源文件名得到目标文件名,注意要用正则表达式,注意.的转义。

根据表示目录的File和目标文件名的字符串,得到表示目标文件的File。

//要在硬盘中准确地创建出一个文件,需要知道文件名和文件的目录。

将源文件的流拷贝成目标文件流,拷贝方法独立成为一个方法,方法的参数采用抽象流的形式。

//方法接受的参数类型尽量面向父类,越抽象越好,这样适应面更宽广。

分析listFiles方法内部的策略模式实现原理

File[] listFiles(FileFilter filter){

File[] files = listFiles();

//Arraylist acceptedFilesList = new ArrayList();

File[] acceptedFiles = new File[files.length];

int pos = 0;

for(File file: files){

boolean accepted = filter.accept(file);

if(accepted){

//acceptedFilesList.add(file);

acceptedFiles[pos++] = file;

}

}

Arrays.copyOf(acceptedFiles,pos);

//return (File[])accpetedFilesList.toArray();

}

copy所有的java文件到硬盘_将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad...相关推荐

  1. 将d:\java目录下的所有.java文件复制到d:\jad 目录下,并将原来文件的扩展名从.java 改为.jad

    package com;import java.io.*; import java.util.ArrayList; import java.util.List; /* 编写一个程序,将d:\java目 ...

  2. 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad

    package com.hbut.test; import java.io.File; import java.io.FileNotFoundException; import java.io.Fil ...

  3. Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg...

    package com.swift;import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; im ...

  4. 以java为扩展名_Java源程序文件的扩展名为.java。

    Java源程序文件的扩展名为.java. 答:√ Many mothers today feel _(conflict)_ ?about working outside the home. 答:对 ( ...

  5. 编写一个程序,将 d:\java 目录下的所有.java 文件复制到 d:\jad 目录下,并将原来文件的扩展名从.java 改为.jad。...

    package IO; import java.io.*; public class FileCopy {public static void main(String[] args) throws E ...

  6. java源文件到字节码的命令,Java的源代码文件的扩展名是 ,Java源文件通过编译命令编译成的字节码文件(平台无关)的扩展名是 。...

    [判断题]SNMP使用探询以维持对网络资源的实时监视,同时也采用陷阱机制报告特殊事件. [单选题]如果一种物品的市场价格高于均衡价格,下列说法正确的是( ). [判断题]杜甫的"不为困穷宁有 ...

  7. java好听的名字_(男孩起名)李白诗中最唯美的三字名字推荐,李白诗中最唯美的三字名字取名方法 - Java伴我余生 - 宝宝起名网...

    温馨提示: 本文约有1125个文字,大小约为5KB,预计阅读时间3分钟,本文共 3张图片. 本文李白诗中最唯美的三字名字推荐,李白诗中最唯美的三字名字取名方法,请您欣赏.宝宝起名网众多优秀文章,如果想 ...

  8. 用java创建person类_创建一个Person类,有以下属性:名字、身高、性别、年龄,创建10个对象,用java程序...

    展开全部 public class Person{ private String name; private int height; private String sex; private int a ...

  9. 把java复制到e_编写一个程序,将e:\java目录下的所有.java文件复制到e:\jad目录下...

    package cn.io.file.demo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...

最新文章

  1. 示波器基本原理之二:采样率
  2. Spring Session——@EnableSpringHttpSession注解
  3. ae去黑插件_视频素材如何去黑底?送你这款插件,自动一键去黑底。适用AE、PR...
  4. c# 自定义应用程序配置文件(app.config)
  5. DevOps:从「蒸汽时代」到「高铁时代」,SUNMI DevOps转型之路 | 原力计划
  6. 礼品盒子插画素材丨节日设计加上它之后价值翻倍!
  7. 信息安全完全参考手册之信息安全概述(第一章)
  8. php数组出栈,php array_pop()数组函数将数组最后一个单元弹出(出栈)
  9. git 上传项目到github
  10. 【转】优秀的Java程序员必须了解GC的工作原理
  11. matlab 不确定度计算器,不确定度计算器
  12. Android Lolipop AssetAtlasService引起的系统崩溃
  13. java安装 2203_高手分析win7系统无法安装java程序提示“内部错误2203”的处理
  14. [文摘20090201]男女朋友~~需记住亦舒的77句话
  15. EntityComponentSystemSamples学习笔记
  16. 计算机ping 的快捷键,Ping命令使用小技巧
  17. 为什么要有Git暂存区
  18. vue集合离线百度地图
  19. 滤波器,滤波器的种类,作用,原理
  20. Sperax月报 | 2021年8月

热门文章

  1. 文章已转移到“字符集编码与乱码”分类下
  2. [翻译]现代Linux系统上的栈溢出攻击【转】
  3. C# 文件流操作 之 删除、复制、转移多个文件
  4. 2010信息科工作总结
  5. Ocelot API网关的实现剖析
  6. DWZ(JUI) 教程 跨域请求 iframeNavTab
  7. 磁盘阵列,双机热备,负载均衡
  8. 三种编程命名规则:驼峰命名法 (壹)
  9. python中二维列表的遍历方式(亲测)
  10. 阿里P8架构师谈:阿里双11秒杀系统如何设计?