- 浏览: 162183 次
文章分类
最新评论
-
sydneytsao2:
gfs球棒gsd
Java设计模式——六大原则 -
涛涛饭:
memoryisking 写道可以看看这篇文章,构建一个简单的 ...
Java线程池使用说明 -
a492846462:
Java线程池使用说明 -
sprita1:
资源很好很强大,对楼主膜拜中.....
Java线程池使用说明 -
memoryisking:
可以看看这篇文章,构建一个简单的线程池:http://www. ...
Java线程池使用说明
编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。
大家正在做上面这道题,网上迟到的朋友也请做做这道题,找工作必须能编写这些简单问题的代码!)
答: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(){
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文件集合
1.1 得到目录 File srcDir = new File("d:\\java");
1.2 得到目录下的所有java文件:File[] files = srcDir.listFiles(new MyFileFilter());
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 将源文件的流拷贝成目标文件流,拷贝方法独立成为一个方法,方法的参数采用抽象流的形式。
//方法接受的参数类型尽量面向父类,越抽象越好,这样适应面更宽广。
}
分析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();
}
发表评论
-
设置session失效的几种方法
2013-12-12 09:30 590设置session失效的几种 ... -
Java性能基础-Java堆内存
2013-01-25 15:25 1083导读:对于程序员来说,知道堆空间,设置堆空间,处理堆空间的o ... -
Collection框架
2013-01-25 15:13 1067Collection框架 集合框架 ... -
为什么匿名内部类只能访问其所在方法中的final变量
2013-01-25 14:48 815(1).内部类是外部类的一个成员,就像外部类的成员方法一样,所 ... -
Tomcat目录及server.xml详解
2012-09-11 13:23 848本文参考自:Tomcat全 ... -
java获得项目绝对路径
2012-09-05 11:16 5166在jsp和class文件中调用的相对路径不同。在 ... -
HttpURLConnection用法详解
2012-09-03 11:35 947HttpURLConnectio ... -
问题列表
2012-08-15 22:01 7951.如何验证xml文件是否符合规范 2.sql常用操作建存储 ... -
Java简单问题
2012-08-14 22:56 8981.HashMap和HashTable区别 Has ... -
FilenameFilter的几种基本用法
2012-08-13 10:41 765现在假设我们想观看 ... -
【JDBC】java中常见三种注册驱动方式比较
2012-08-08 09:26 10211.DriverManager.registerDriver( ... -
排序都有哪几种方法
2012-08-03 08:49 1447排序方法一般都就那几 ... -
Java定时器
2012-08-02 14:28 0请说说你对Java定时器的认识,尝试写一个例子来说明。 答:在 ... -
Java中的finalize
2012-08-02 13:14 854Java中finalize() ... -
java中流的详解
2012-08-01 16:50 990java中流的详解 博客分类: j2ee ... -
如何处理大数据量的查询
2012-07-31 14:38 3368J2EE综合:如何处理大数 ... -
大数据量处理
2012-07-31 10:59 823大数据量处理(一) 大数据量的问题是很多面试笔试 ... -
三道面试题
2012-07-31 10:01 1026[讨论] 今天去面试了,有三个题目问倒我了,写出来大家做做! ... -
实现从文件中一次读出一个字符的操作,java实现从文件中一次读出一个字符的操作
2012-07-30 16:41 0实现从文件中一次读出一个字符的操作,java实现从文件中 ... -
Java线程池使用说明
2012-07-30 16:35 59716Java线程池使用说明 一 简介 线程的使用在java中占 ...
相关推荐
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? ...... 7 2、Java 有没有 goto? .......................................................................................................
jad是用C++编写的一款java反编译工具,它的主要功能是反汇编.class文件。Java源代码(.java文件)是需要先经过编译,才能生成.class文件,它为Java程序提供独立于底层主机平台的二进制形式的服务。jad的功能就是将....
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
c#编写的用jad1.5.8g反射java的class文件,可以对文件夹或者jar文件进行反射。jad不能直接对jar反射,使用了ICSharpCode.SharpZipLib对jar解压。不了解c#的可以直接使用bin中的useJad.exe,当然需要先安装....
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 68 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
12、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 60 13、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类...
相信每一个Java开发人员,都曾经用过诸如Jad之类的反编译器,对Java的class 文件进行反编译,从而观察程序的结构与实现细节。如此一来,对于那些需要严格进行知识产权保护的Java应用,如何有效的保护客户的商业投资...
J2ME 手机游戏开发实现 J2ME 手机游戏开发是一种基于 Java...将游戏应用打包为 JAR 文件或 JAD 文件,发布到手机应用商店或通过其他渠道分发给用户。 确保游戏应用符合各种手机平台的要求和规范,提供良好的用户体验。
相信每一个Java开发人员,都曾经用过诸如Jad之类的反编译器,对Java的class 文件进行反编译,从而观察程序的结构与实现细节。如此一来,对于那些需要严格进行知识产权保护的Java应用,如何有效的保护客户的商业投资...