`
AutomaticThoughts
  • 浏览: 165509 次
社区版块
存档分类
最新评论

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

 
阅读更多

编写一个程序,将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();

      

}

分享到:
评论

相关推荐

    Java反编译工具把.class文件转换为.java文件

    - 递归处理子目录:若想对整个包含多个子目录的项目进行反编译,可以使用`-r`选项,例如:`jad -r -d srctree/**/*.class`将递归地处理`tree`目录及其所有子目录下的`.class`文件,并根据类所在的包名称创建对应的...

    java经典算法合集

    在这个算法中,我们需要编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。我们可以使用Java语言来实现这个算法。 首先,我们需要使用File类来创建文件对象...

    JAD:Java反编译工具

    使用前,请确认文件类型并根据文件内容进行相应的操作,例如,如果是一个可执行文件,可以直接在命令行中运行;如果是文档,则应阅读以获取关于如何安装和使用JAD的详细信息。在处理Java反编译任务时,JAD是一个强大...

    jad.exe(java反编译工具)

    Java反编译工具,如jad.exe,是程序员和软件开发者常用的工具之一,它能够将已编译的Java字节码(.class文件)转换回源代码格式,这对于理解和学习现有程序的内部工作原理、逆向工程或者在丢失源代码的情况下恢复源...

    jad 编译.class文件成java源文件

    Java反汇编器(JAD)是一个非常有用的工具,它允许开发者将已编译的`.class`文件转换回可读的Java源代码`.java`文件。这个过程被称为反编译,因为它是编译过程的逆操作。在某些情况下,如处理没有源代码的第三方库...

    K-JAVA JAD文件生成器 V1.0

    K-JAVA JAD文件生成器 V1.0是一款专门用于创建K-Java应用程序描述文件(JAD)的工具。在移动设备尤其是早期的Java手机上,开发者常常使用JAD文件来描述应用程序的基本信息,以便设备能够正确安装和运行这些应用。JAD...

    反编译工具jad,将class文件反编译成java文件

    "jad"是一个知名的Java反编译器,它能够将.class文件转换回接近原始的.java源代码,虽然不能完全恢复到最初的编写状态,但足以帮助我们理解代码逻辑。 jad的使用非常简单,它是一个可执行程序,如压缩包中的"jad....

    java jad生成器

    Java JAD(Java Application Descriptor)生成器是一种工具,主要用于创建和管理Java应用程序的JAD文件。JAD文件是Java Micro Edition(JME)或Java ME应用的元数据,它包含了关于应用程序的基本信息,如包名、版本...

    java版pdf阅读器(装有jad)

    1. 如果你的设备需要JAD文件来安装Java应用程序(通常在旧的移动设备或某些特定环境中),你需要将这两个文件`shoujicomcn732325.jad`和`shoujicomcn732325.jar`放置在同一目录下。然后,通过设备上的Java应用管理器...

    将jar包转成.java的源码的工具

    标题中的“将jar包转成.java的源码的工具”是指一种可以反编译Java字节码(.class文件)并将其转换为源代码(.java文件)的软件工具。在Java开发中,有时我们需要查看或理解已编译的jar包内部的工作原理,这种工具就...

    JAVA反编译软件(可将class文件反编译为java文件)

    Java反编译是Java开发中一个重要的辅助工具,它能够帮助开发者查看已编译的`.class`文件中的源代码,即使原始的`.java`源文件已经丢失或未被提供。这个过程对于理解类库的工作原理、逆向工程、调试、学习或者分析...

    jad 反编译java 1.6

    1. `jad.exe`:这是jad反编译器的可执行文件,用户可以通过运行这个文件来启动jad并进行反编译操作。 2. `FrontEnd.exe`:这可能是一个前端界面程序,允许用户以图形化的方式与jad交互,使得反编译过程更加直观和...

    Eclipse反编译jad.exe和jad.jar 和 安装文档

    Eclipse是一款广泛使用的Java集成开发环境(IDE),它提供了丰富的功能来帮助开发者编写、调试和部署Java应用程序。在软件开发过程中,有时我们需要查看Java类文件的源代码,但原始源码可能不可用或丢失,此时就需要...

    class文件编译器.zip

    每个类定义都会对应一个`.class`文件,如果源文件中有多个public类,那么需要额外的 `-d` 参数指定输出目录,以避免文件重命名冲突。 4. **类加载器与字节码执行**: JVM使用类加载器加载`.class`文件,然后解析...

    java .class反编译成.java工具

    常用的Java反编译工具有jad、FernFlower、Cfr等,而jd-gui.exe是其中一种图形界面的反编译工具,它提供了一个直观的方式来查看和分析.class文件。 jd-gui.exe的使用步骤如下: 1. **下载与安装**:首先,你需要从...

    Jad(Java源代码反编译工具)

    Java源代码反编译工具Jad是开发人员和逆向工程师常用的一款软件,它能够将已编译的Java字节码(.class文件)转换回可读的Java源代码(.java文件)。在软件开发和调试过程中,Jad可以帮助开发者理解第三方库的功能,或者...

    java源码查看器(查看.class文件源码)

    Java源码查看器是一款工具,它能够帮助开发者查看并理解`.class`文件的源代码,这类文件是由Java编译器将`.java`源代码编译后的产物。在默认情况下,`.class`文件并不包含原始的源代码,但通过反编译技术,我们可以...

    将class文件转换成java文件

    标题“将class文件转换成java文件”和描述提到了这个过程,主要涉及到Java反编译技术。下面我们将详细探讨这个主题。 首先,.class文件是Java编译器将源代码编译后的二进制格式,它包含了Java程序的字节码。当只有....

Global site tag (gtag.js) - Google Analytics