Java版资源管理器一、背景描述学习完反射可以完成本项目的练习。二、实现要求该项目的目的是练习高级Swing的组件的使用:同时掌握java编译器与VM的工作机理为了区别于MS的资源管理器,我们设计成初级Java练习者的java,class,mf文件等资源文件管理器功能如下:设置类路径。设置扩展路径。过滤显示*.java,*.class,*.mf,*.jar,*.war,*.ear,*.properties等文件。能察看编辑保存*.java,*.mf,*.properties等文件。能编译运行*.class,*.jar文件。能察看jar,ear,war等文件信息。本类中采用内部窗体。三、实现技术a)使用Swing中的复杂组件:JTree、JTable、JTabledPaneb)使用反射技术反射已存在的class文件,并获取该文件中的字段、构造方法、方法等信息c)读取文件的一些信息及内容四、类图a)类图b)类图说明类名称ExplorerMain类描述资源管理器主程序类。包描述main函数描述publicExplorerMain()缺省构造函数。publicstaticvoidmain(String[]args)主函数。publicvoidactionPerformed(ActionEvente)按钮事件。类名称DirTree类描述资源管理器的树状显示类。包描述frm函数描述publicDirTree()缺省构造函数。publicbooleanisShowHiden()显示是否显示隐臧文件。publicvoidsetShowHiden(booleanisShowHiden)设置是否显示隐藏文件。privatevoidaddNodeToParentNode(Filefile,DefaultMutableTreeNodenode)把file下目录添加到某节点上。privatevoidaddRootNode()根结点添加子节点。(即为我的电脑添加各个盘符)•privateStringgetFilePath(StringnodePath)解析节点的字符串值得到节点的所代表的文件的路径。privateStringgetOsName()获得操作系统的名称。内部类privateclassDirTreeWillExpandListenerlmplimplementsTreeWillExpandListener节点展开和关闭触发的事件。privateclassDirTreeSelectionListenerlmplimplementsTreeSelectionListener点击节点的时候,向右边的JTable中显示数据。类名称FileInfoPane类描述不冋文件的不冋操作类。其中summery是java等文本文件就显示他的内容是class使用反射显示他的成员属性是jar显示其中的文件清单与执行主类是war显示文件清单与web.xml的主要内容是ear显示即plication.xml等xml文件中的配置信息与相关模块。该类的实现可以使用复合组件也可以使用Java2D的技术包描述frm函数描述publicFileInfoPane()缺省构造函数。publicConsolePanegetConsolePane()返回该控制面板。publicvoidchangeFilelnfo()修改文件信息。publicFilegetFile()获得文件。publicvoidsetFile(Filefile)设置文件。publicJTabbedPanegetInfotab()获取信息面板。类名称FileList类描述文件的列表及详情操作类。包描述frm函数描述publicFileList()缺省构造函数。publicvoidsetFileList(File[]list,StringfilePosition)点击文件目录上,显示目录内被过滤的文件的信息。publicvoidactionPerformed(ActionEvente)右键事件。privatevoidprocessRun()进程运行。privatevoidprocessStop()进程停止。内部类privateclassFileListSelectionListenerlmplimplementsListSelectionListener
的选择事件。publicvoidvalueChanged(ListSelectionEvente)覆盖事件。privatevoidsetSelectFile()设置当前文件为选中的文件。内部类privateclassInputStreamConsoleimplementsRunnableJar、class运行的控制台。publicvoidrun()run函数。内部类privateclassOutputStreamConsoleimplementsRunnable输出流类。publicOutputStreamConsole(JTextAreaarea,BufferedWriterbw)publicvoidrun()内部类privateclassMyMouseEventextendsMouseAdapter鼠标事件类。publicvoidmousePressed(MouseEvente)鼠标点击事件。类名称ConsolePane类描述控制台面板包描述frm.file函数描述publicConsolePane()控制台面板的构造函数。publicJTextAreagetArea()获取JTextAreapublicvoidinitArea()初始化面板。类名称ContentPane类描述内容面板包描述frm.file函数描述publicContentPane()缺省构造函数publicvoidinit(Filefile)读取当前文件内容类名称EarPane类描述Ear文件属性面板(该功能暂未实现)包描述—frm.file函数描述publicEarPane()缺省构造函数publicvoidinit(Filefile)读取ear文件的信息。类名称ExcutePane类描述Jar、class执行文件面板包描述frm.file函数描述publicExcutePane()缺省构造函数。publicvoidinit(Filefile)根据文件是否为jar或class文件显示右键执行菜单publicvoidactionPerformed(ActionEvente)右键执行采单事件。内部类privateclassInputStreamConsoleimplementsRunnable程序执行输入线程内部类privateclassOutputStreamConsoleimplementsRunnable程序执行输出线程类名称FileBasePane类描述文件基本信息面板包描述frm.file函数描述publicFileBasePane()缺省构造函数。publicvoidinit(Filefile)初始化显示文件的基本信息。类名称JarPane类描述Jar文件属性信息面板(该功能暂未实现)包描述frm.file函数描述publicJarPane()缺省构造函数publicvoidinit(Filefile)显示jar文件属性。类名称RelectPane类描述反射class文件面板包描述frm.file函数描述publicRelectPane()缺省构造函数publicvoidinit(Filefile)显示反射class文件后的信息。类名称WarPane类描述War文件属性信息面板(该功能暂未实现)包描述frm.file函数描述publicWarPane()缺省构造函数publicvoidinit(Filefile)显示war文件属性。类名称ZipPane类描述压缩文件信息面板。包描述frm.file函数描述publicZipPane()缺省构造函数。publicvoidinit(Filefile)读取压缩包内的文件信息,并显示。类名称ClassLoaderAny类描述反射类。包描述tools函数描述publicClassgetClass(Stringname,byte[]b,intoff,intlen)获取反射的信息类名称ExplorerUtil类描述文件信息类。包描述tools函数描述publicstaticHashMapvInteger,String〉getRelectInfo(Filefile)throwsClassNotFoundException,1OException获取文件的反射信息。publicstaticProcessexcuteClass(Filefile)throwslOException执行文件进程。publicstaticEnumerationgetZipList(Filefile)throwsZipException,1OException获取压缩文件信息。publicstaticPropertiesgetMainInfo(Filefile)throwslOException获取属性文件的信息。publicstaticvoidgetWarlnfo(Filefile)获取war文件信息(未实现)。publicstaticvoidgetEarlnfo(Filefile)获取ear文件信息(为实现)。publicstaticStringgetContent(Filefile)throwslOException获取文本文件的内容。publicstaticPropertiesgetFileBaselnfo(Filefile)获取文件的基本信息。类名称Filelnfo类描述文件过滤器类。包描述tools函数描述publicFilelnfo()缺省文件类型的构造函数。文件类型:".txt",".java",".mf",".class",".jar",".war",".ear",".properties"。对应的文件类型说明:"文本文件","Java程序",”Java清单文件",”Java的运行文件",”Java的打包文件","Web程序文件”,"JBoss等应用程序文件",”Java属性文件”。publicFileInfo(booleanisShowHiden)缺省文件类型的构造函数。文件类型:".txt",".java",".mf",".class",".jar",".war",".ear",".properties"。对应的文件类型说明:"文本文件",”Java程序",”Java清单文件",”Java的运行文件",”Java的打包文件",”Web程序文件",”JBoss等应用程序文件",”Java属性文件”。publicFilelnfo(String[][]fileType,booleanisShowHiden)带参数类型的构造函数。必须保证传入的文件类型2数组长度相等。否则程序自动初始化默认数组。publicbooleanaccept(Filepathname)测试指定抽象路径名是否应该包含在某个路径名列表中。publicStringgetFileType(Filepathname)获得某个类型的文件的类型文件说明。publicstaticStringgetFileFormat(Filepathname)获得某个文件的文件格式,即文件的扩展名。publicstaticStringgetFileName(Filepathname)获得某个文件的文件名。publicintgetFileIntegerType(Filepathname)获得某个类型的文件的类型。publicbooleanisShowHiden()获得是否显示隐臧文件。publicvoidsetShowHiden(booleanisShowHiden)设置是否显示隐藏文件。c)效果图五、技术技巧提问a)怎样用树状节点显示文件目录,以及目录展开和关闭时应该执行那些操作。展开时,使用递归方式递归当前目录下的2-3目录显示的子节点上即可。关闭时,删除底下的2-3层的子节点即可。JTalbe、JTree的使用,以及他们的Model、CellRendener等的使用。如何反射一个class文件如何读取压缩文件中的文件信息使用Runtime,执行一个jar或class文件,并得到该线程的输入输出流,根据需要输入输出数据。六、附加说明