编写一个程序,将djava目录下的所有.java文件复制到djad目录下,并将原来文件的扩展名从.java改为.jad
来源:互联网 发布:网络黄金egd上市 编辑:程序博客网 时间:2024/05/16 09:38
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("目录不存在");//java.io.FilenameFilter是文件名过滤器,用来过滤不符合规格的文件名,并返回合格的文件。//过滤合格的文件files数组 File[] files = srcDir.listFiles( new FilenameFilter(){//dir文件目录,name文件名 public boolean accept(File dir, String name) { return name.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); String destFileName = f.getName().replaceAll("\\.java$", ".jad"); FileOutputStream fos = 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); } }}
由本题总结的思想及策略模式的解析:
1.
class jad2java{ 1. 得到某个目录下的所有的java文件集合 File srcDir = new File("d:\\java"); //1.1 得到目录 File[] files = srcDir.listFiles(new MyFileFilter()); //1.2 得到目录下的所有java文件 /** * 1.3 只想得到.java的文件 */ class MyFileFilter implememyts FileFilter{ public boolean accept(File pathname){ return pathname.getName().endsWith(".java") } }
**2.将每个文件复制到另外一个目录,并改扩展名 2.1 得到目标目录,如果目标目录不存在,则创建之 2.2 根据源文件名得到目标文件名,注意要用正则表达式,注意.的转义。 2.3 根据表示目录的File和目标文件名的字符串,得到表示目标文件的File。 //要在硬盘中准确地创建出一个文件,需要知道文件名和文件的目录。 2.4 将源文件的流拷贝成目标文件流,拷贝方法独立成为一个方法,方法的参数采用抽象流的形式。 //方法接受的参数类型尽量面向父类,越抽象越好,这样适应面更宽广。
}
2.
分析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();}
0 0
- 编写一个程序,将djava目录下的所有.java文件复制到djad目录下,并将原来文件的扩展名从.java改为.jad
- 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为. jad
- 编写一个程序,将 d:\java目录下的所有.java 文件复制到d:\jad目录下,并将原来文件的扩展名从.java 改为.jad。
- 编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad
- 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad
- 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad
- 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。以下代码目录和需要更的后缀名改了
- 黑马程序员 编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。
- 面试题 编写一个程序,将e:\project\java目录下的所有.java文件复制到 e:\project\jad目录下,并将原来文件的扩展名从.java改为.jad。
- Java面试:将d:/java目录下的所有.java文件复制到d:/jad目录下,并将原来文件的扩展名从.java改为.jad
- 将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad
- 将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad
- 将d:\java目录下的所有.java文件复制到d:\jad目录下, 并将原来文件的扩展名从.java改为.jad
- 将d:\\java目录下所有的java文件复制到d:\\jad目录下并将原来的文件扩展名改为jad
- 编写一个程序,将e:\java目录下的所有.java文件复制到e:\jad目录下
- 编写程序,将指定目录下所有.java 文件拷贝到另一个目的中,并将扩展名改为.txt。
- 黑马程序员—编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt
- Java将某个目录下的所有文件及内容复制到另一目录
- The content of the adapter has changed but ListView did not receive a notification
- 第29课 Python中for循环体与文件(迭代器解析)
- ROS新功能包PlotJuggler绘图
- .h .lib .dll文件作用和区别
- git——介绍与安装
- 编写一个程序,将djava目录下的所有.java文件复制到djad目录下,并将原来文件的扩展名从.java改为.jad
- 权限辅助工具类
- Django下实现HelloWorld
- MATLAB 如何输出-print,fprint,fscanf,disp
- libevent 之 hello world
- 328. Odd Even Linked List
- 超级厉害的JavaScript —— ECMAScript 6 标准(8) —— Promise对象
- ZooKeeper 启动过程分析
- Qt creator5.7 OpenCV249之resize函数(含源码下载)