- 浏览: 165509 次
文章分类
最新评论
-
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 614设置session失效的几种 ... -
Java性能基础-Java堆内存
2013-01-25 15:25 1110导读:对于程序员来说,知道堆空间,设置堆空间,处理堆空间的o ... -
Collection框架
2013-01-25 15:13 1104Collection框架 集合框架 ... -
为什么匿名内部类只能访问其所在方法中的final变量
2013-01-25 14:48 849(1).内部类是外部类的一个成员,就像外部类的成员方法一样,所 ... -
Tomcat目录及server.xml详解
2012-09-11 13:23 900本文参考自:Tomcat全 ... -
java获得项目绝对路径
2012-09-05 11:16 5203在jsp和class文件中调用的相对路径不同。在 ... -
HttpURLConnection用法详解
2012-09-03 11:35 983HttpURLConnectio ... -
问题列表
2012-08-15 22:01 8281.如何验证xml文件是否符合规范 2.sql常用操作建存储 ... -
Java简单问题
2012-08-14 22:56 9301.HashMap和HashTable区别 Has ... -
FilenameFilter的几种基本用法
2012-08-13 10:41 813现在假设我们想观看 ... -
【JDBC】java中常见三种注册驱动方式比较
2012-08-08 09:26 10651.DriverManager.registerDriver( ... -
排序都有哪几种方法
2012-08-03 08:49 1487排序方法一般都就那几 ... -
Java定时器
2012-08-02 14:28 0请说说你对Java定时器的认识,尝试写一个例子来说明。 答:在 ... -
Java中的finalize
2012-08-02 13:14 898Java中finalize() ... -
java中流的详解
2012-08-01 16:50 1029java中流的详解 博客分类: j2ee ... -
如何处理大数据量的查询
2012-07-31 14:38 3417J2EE综合:如何处理大数 ... -
大数据量处理
2012-07-31 10:59 872大数据量处理(一) 大数据量的问题是很多面试笔试 ... -
三道面试题
2012-07-31 10:01 1067[讨论] 今天去面试了,有三个题目问倒我了,写出来大家做做! ... -
实现从文件中一次读出一个字符的操作,java实现从文件中一次读出一个字符的操作
2012-07-30 16:41 0实现从文件中一次读出一个字符的操作,java实现从文件中 ... -
Java线程池使用说明
2012-07-30 16:35 59833Java线程池使用说明 一 简介 线程的使用在java中占 ...
相关推荐
- 递归处理子目录:若想对整个包含多个子目录的项目进行反编译,可以使用`-r`选项,例如:`jad -r -d srctree/**/*.class`将递归地处理`tree`目录及其所有子目录下的`.class`文件,并根据类所在的包名称创建对应的...
在这个算法中,我们需要编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。我们可以使用Java语言来实现这个算法。 首先,我们需要使用File类来创建文件对象...
使用前,请确认文件类型并根据文件内容进行相应的操作,例如,如果是一个可执行文件,可以直接在命令行中运行;如果是文档,则应阅读以获取关于如何安装和使用JAD的详细信息。在处理Java反编译任务时,JAD是一个强大...
Java反编译工具,如jad.exe,是程序员和软件开发者常用的工具之一,它能够将已编译的Java字节码(.class文件)转换回源代码格式,这对于理解和学习现有程序的内部工作原理、逆向工程或者在丢失源代码的情况下恢复源...
Java反汇编器(JAD)是一个非常有用的工具,它允许开发者将已编译的`.class`文件转换回可读的Java源代码`.java`文件。这个过程被称为反编译,因为它是编译过程的逆操作。在某些情况下,如处理没有源代码的第三方库...
K-JAVA JAD文件生成器 V1.0是一款专门用于创建K-Java应用程序描述文件(JAD)的工具。在移动设备尤其是早期的Java手机上,开发者常常使用JAD文件来描述应用程序的基本信息,以便设备能够正确安装和运行这些应用。JAD...
"jad"是一个知名的Java反编译器,它能够将.class文件转换回接近原始的.java源代码,虽然不能完全恢复到最初的编写状态,但足以帮助我们理解代码逻辑。 jad的使用非常简单,它是一个可执行程序,如压缩包中的"jad....
Java JAD(Java Application Descriptor)生成器是一种工具,主要用于创建和管理Java应用程序的JAD文件。JAD文件是Java Micro Edition(JME)或Java ME应用的元数据,它包含了关于应用程序的基本信息,如包名、版本...
1. 如果你的设备需要JAD文件来安装Java应用程序(通常在旧的移动设备或某些特定环境中),你需要将这两个文件`shoujicomcn732325.jad`和`shoujicomcn732325.jar`放置在同一目录下。然后,通过设备上的Java应用管理器...
标题中的“将jar包转成.java的源码的工具”是指一种可以反编译Java字节码(.class文件)并将其转换为源代码(.java文件)的软件工具。在Java开发中,有时我们需要查看或理解已编译的jar包内部的工作原理,这种工具就...
Java反编译是Java开发中一个重要的辅助工具,它能够帮助开发者查看已编译的`.class`文件中的源代码,即使原始的`.java`源文件已经丢失或未被提供。这个过程对于理解类库的工作原理、逆向工程、调试、学习或者分析...
1. `jad.exe`:这是jad反编译器的可执行文件,用户可以通过运行这个文件来启动jad并进行反编译操作。 2. `FrontEnd.exe`:这可能是一个前端界面程序,允许用户以图形化的方式与jad交互,使得反编译过程更加直观和...
Eclipse是一款广泛使用的Java集成开发环境(IDE),它提供了丰富的功能来帮助开发者编写、调试和部署Java应用程序。在软件开发过程中,有时我们需要查看Java类文件的源代码,但原始源码可能不可用或丢失,此时就需要...
每个类定义都会对应一个`.class`文件,如果源文件中有多个public类,那么需要额外的 `-d` 参数指定输出目录,以避免文件重命名冲突。 4. **类加载器与字节码执行**: JVM使用类加载器加载`.class`文件,然后解析...
常用的Java反编译工具有jad、FernFlower、Cfr等,而jd-gui.exe是其中一种图形界面的反编译工具,它提供了一个直观的方式来查看和分析.class文件。 jd-gui.exe的使用步骤如下: 1. **下载与安装**:首先,你需要从...
Java源代码反编译工具Jad是开发人员和逆向工程师常用的一款软件,它能够将已编译的Java字节码(.class文件)转换回可读的Java源代码(.java文件)。在软件开发和调试过程中,Jad可以帮助开发者理解第三方库的功能,或者...
Java源码查看器是一款工具,它能够帮助开发者查看并理解`.class`文件的源代码,这类文件是由Java编译器将`.java`源代码编译后的产物。在默认情况下,`.class`文件并不包含原始的源代码,但通过反编译技术,我们可以...
标题“将class文件转换成java文件”和描述提到了这个过程,主要涉及到Java反编译技术。下面我们将详细探讨这个主题。 首先,.class文件是Java编译器将源代码编译后的二进制格式,它包含了Java程序的字节码。当只有....