美文网首页
编写一个程序,将d:\java目录下的所有.java文件复制到d

编写一个程序,将d:\java目录下的所有.java文件复制到d

作者: bug_华 | 来源:发表于2017-09-29 10:03 被阅读0次

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

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Jad2Java {
public static void main(String[] args) throws Exception {
File srcDir =new File("java");
if(!(srcDir.exists()&& srcDir.isDirectory()))
throw new Exception("目录不存在");
File[] files= srcDir.listFiles(
new FilenameFilter(){
publicboolean accept(File dir, String name) {
returnname.endsWith(".java");
}
}
);
System.out.println(files.length);
File destDir= new File("jad");
if(!destDir.exists())destDir.mkdir();
for(File f:files){
FileInputStream fis = new FileInputStream(f);
StringdestFileName = f.getName().replaceAll("\\.java$", ".jad");
FileOutputStreamfos = new FileOutputStream(new File(destDir,destFileName));
copy(fis,fos);
fis.close();
fos.close();
}
}
private static void copy(InputStream ips,OutputStream ops) throws Exception{
int len = 0;
byte[] buf =new byte[1024];
while((len =ips.read(buf)) != -1){
ops.write(buf,0,len);
}
}
}

由本题总结的思想及策略模式的解析:

class jad2java{

  1. 得到某个目录下的所有的java文件集合
    1.1 得到目录 File srcDir = newFile("d:\java");
    1.2 得到目录下的所有java文件:File[] files =srcDir.listFiles(new MyFileFilter());
    1.3 只想得到.java的文件: class MyFileFilterimplememyts FileFilter{
    publicboolean accept(File pathname){
    returnpathname.getName().endsWith(".java")
    }
    }
    2.将每个文件复制到另外一个目录,并改扩展名
    2.1 得到目标目录,如果目标目录不存在,则创建之
    2.2 根据源文件名得到目标文件名,注意要用正则表达式,注意.的转义。
    2.3 根据表示目录的File和目标文件名的字符串,得到表示目标文件的File。
    //要在硬盘中准确地创建出一个文件,需要知道文件名和文件的目录。
    2.4 将源文件的流拷贝成目标文件流,拷贝方法独立成为一个方法,方法的参数采用抽象流的形式。
    //方法接受的参数类型尽量面向父类,越抽象越好,这样适应面更宽广。
    }
    分析listFiles方法内部的策略模式实现原理
File[] listFiles(FileFilter filter){
File[] files =listFiles();
//Arraylis tacceptedFilesList = new ArrayList();
File[] acceptedFiles= new File[files.length];
int pos = 0;
for(File file:files){
booleanaccepted = filter.accept(file);
if(accepted){
//acceptedFilesList.add(file);
acceptedFiles[pos++]= file;
}
}
Arrays.copyOf(acceptedFiles,pos);
//return(File[])accpetedFilesList.toArray();
}

相关文章

  • 算法与编程

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

  • 编写一个程序,将d:\java目录下的所有.java文件复制到d

    listFiles方法接受一个FileFilter对象,这个FileFilter对象就是过虑的策略对象,不同的人提...

  • 第一个Java程序

    Java的第一个程序“Hello,World”。 如果想要编写Java程序,所有的文件后缀必须是*.java文件。...

  • android开发环境配置

    程序文件安装路径1、java:D:\soft\Java\jdk1.8.0_312、sdk: D:\Android\...

  • 002.Android 帮助手册打开慢

    方法一:编写Java程序批量注释 遍历doc目录下的所有文件,将每个文件的上边两行内容删除,参考亲测成功,速度比较慢

  • java学习之7/22(编程HelloWorld程序)

    编程helloworld程序 1. java程序编写过程 a. 编写源文件> [HelloWorld.java]...

  • Java的开发流程

    Java的程序开发,包括三个步骤:编写程序,编译程序,运行程序 编写程序——java源代码,.java文件 编译程...

  • azkaban(四):Java进程

    编写java程序 创建一个java项目,编写一个java程序 将项目达成jar包项目打包 重命名(非必要)jar包...

  • Java笔记

    写第一个java程序,了解Java开发的基本流程 1.将Java代码编写到扩展名为.java的文件中,命名为tes...

  • 开发第一个Java程序

    使用记事本,编写代码 【示例】使用记事本开发第一个Java程序 可在d盘下建立文件夹mycode,用于保存学习的代...

网友评论

      本文标题:编写一个程序,将d:\java目录下的所有.java文件复制到d

      本文链接:https://www.haomeiwen.com/subject/grnbextx.html