龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java实现分类文件拷贝

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
在Java中对文件进行分类 假如你是个Java程序员,也许你对Java的文件组织已经非常清楚,例如你知道你们项目组是如何把众多的Java文件进行分类,组成整个项目工程.通常你们可能会根据业务

  在Java中对文件进行分类
  
   假如你是个Java程序员,也许你对Java的文件组织已经非常清楚,例如你知道你们项目组是如何把众多的Java文件进行分类,组成整个项目工程.通常你们可能会根据业务来分组.有时候,我们作为项目成员,就会把自己的Java文件根据分组来进行分类的.下面,给出个例子:
   某项目ProjectX要给某家名叫comX的商业公司做的信息系统,根据业务需要分为,a,b,c,d四组,采用典型的三层结构,其中,工程中的文件分为前台部分和后台部分.经过分析,该项目最后把文件组织成这样的结构:
   a组写的前台文件所在的包为com.comX.foreg.a,相对应的后台文件放在com.comX.backg.a中
   b组写的前台文件所在的包为com.comX.foreg.b,相对应的后台文件放在com.comX.backg.b中
   c组写的前台文件所在的包为com.comX.foreg.c,相对应的后台文件放在com.comX.backg.c中
   d组写的前台文件所在的包为com.comX.foreg.d,相对应的后台文件放在com.comX.backg.d中
   当然,这只是我的一种简化的模型,实际上的项目由于业务交叉,综合复杂度等等因素应该比这样的结构复杂的多.象上面这样的工程,最后所有的代码放在文件夹"D:ProjectXsrc"下面,而下面的文件组织和Java包路径可能又不一样.
   现在,我描述一下,我要阐述的问题,当这个工程已经基本完成之后,各个小组都出现了修改,集成发布人员,给项目组开了一个FTP,ftp文件结构正好和原来的结构一样,a组的程序员修改了某个文件后,按照他所在的位置,重新上传.这样,通常会有人把代码传错了位置,最后编译的时候出现错误,对于及其复杂,各组有所交叉的组织来说,编译的时候查错,都很困难.
  
   现在要做的是,让修改后的文件全部都传到一个文件夹中,通过程序把这些文件分发到他们应该在的位置.
  
   好,如何来作?
   思路很简单:每个文件都有他们的包路径,既然我们已经有了完整的文件结构,我们就能知道每一个包路径所对应的文件组织中的路径,如有一个文件ClassX.java,我们通过读取他的包路径为com.comX.foreg.a.a1,a1为a组的一个用例,但是它实际所在的位置为:
  d:ProjectXsrcusiness_1comcomXforegaa1ClassX.java,我们另外一个文件CalssY.java,他的包为com.comX.foreg.a.a2,它是a组的第二个用例,但他的实际存放路径为:d:ProjectXsrcusiness_2comcomXforegaa2ClassY.java,
  我们就可以根据事先指定的src目录找到他的合适位置.
   我所作的是为本项目组的程序员上传文件提供方便,他们把要上传的文件上传到一个文件夹,然后通过这个程序拷贝到正确的位置即可.下面是我实现的一些模块,你可以根据自己的非凡情况来做修改或扩展.
  
  0.处理这个问题需要设置一些类变量:
   private String filePath="D:Workupload"; //文件上传路径,直接指向你的ftp目录吧
   private String configeFile="packageConfig.cxh"; //路径配置文件,后面会专门讲到
   private String objPath="D:Workgdltsrc"; //目标文件路径,你可以指定任意,但要和配置文件一致
   private PrintStream ps=null; //输出消息重定向,用于处理过程中的信息输出定向
   private ArrayList lines=null; //保存配置文件
   String[] heads=null; //保存每条配置的头
   String globalLine; //记录一条配置信息
  
  1.传入一个Java文件,返回该Java文件的包路径,如上面的ClassX.java,返回com.comX.foreg.a
   /**
   * 读取一个java文件,返回他的package信息取出来
   * @param file 文件句柄
   * @return 返回包路径
   */
   private String readPac(File file){
   String pac=null;
   try{
   BufferedReader fr=new BufferedReader(new FileReader(file)); //读取器
   String line=fr.readLine();
   while(line!=null){ //逐行处理
   //处理当前行
   line.trim();
   if(line.startsWith("package")){ //找到包信息了
   pac=line.substring(7,line.length()-1).trim();
   break;
   }
   line=fr.readLine();
  
精彩图集

赞助商链接