随笔-19  评论-2  文章-1  trackbacks-0

import java.io.*;

public class FileRead{
 private static int space=0;
 private static double totalFile = 0;
 private static double totalDirectory = 0;
 
 public String printSpace(int space){
  String str = "";
  for(int i=0;i<space;i++)
   str += "    ";
  return str; 
 }

 public void searchFile(File f)throws IOException{
  String path = f.getAbsolutePath();
  File currentFile = new File(path); //取得当前路径的文件
  File[] file = currentFile.listFiles();
  
  space++;

  for(int i=0;i<file.length;i++){
   System.out.println(printSpace(space) + file[i].getName());
   if(file[i].isDirectory()){
    totalDirectory  += 1;
    searchFile(file[i]);
    if(space>0)
     space--;   
   }
   totalFile += 1; 
  }
 } 
 public static void main(String args[])throws IOException{
  String path = null;
  if(args.length<1)
   path =".";
  else
   path = args[0];
  FileRead read = new FileRead();
  File file = new File(path);
  
  if(!file.exists()){
   System.err.print("the path is error");
   System.exit(1);
  } 
  read.searchFile(file);
  System.out.println("the file is :" + (totalFile-totalDirectory));
  System.out.println("thd directory is : " + totalDirectory);
 }
}
这个程序在便历多文件时会出现问题?不知道问题在哪里?

合成模式
        合成模式他是一种树型结构,他可以通过对合成的图的单独部分方法达到对整个合成图方法问。他由三部分组成,抽象构件—Component和树枝构件—Composite以及树叶构件Leaf。合成模式分为两种,一种是透明式的。另一个是安全式的合成模式。
         透明式的合成模式和安全式的合成模式,他们的组成成分都一样,他们的区别是:透明式的合成模式,他在抽象构件种增加了操作子类对象的一些接口,这样在实现的过程中,无论是树枝构件还是树叶构件都必须实现这些接口,这对树叶构件来说,这种接口实现是多余的,所以树叶构件是通过平庸式的方式来实现,这种实现,将造成编译时可以通过,但是当用户在应用的过程过如果调用这些方法,将造成运行时的错误,这就造成了程序的不安全;而安全式的合成模式,他并没有在抽象构件实现对子结点接口的申明,他是通过树枝直接对管理子类所需要的方法进行申明,这就给程序带来灵活性,但是也给程序带来不便的管理性,这种实现使得程序不会出现运行时的错误。
         一般我们在这样的情况下应用合成模式:
                  1、当我们要体现构件的部分和整体的结构时。
                  2、当我们要要忽略个体构件与整体构件的区别时,并且要平等的对待个体构件和整体构件时。
         使用合成构件有以下好处:
                  1、使用合成模式可以很容易的增加新构件的种类。
                  2、使用合成模式方便了用户对构件的使用,因为他们不用担心使用的是树页构件还是树枝构件。
         他的缺点:使用合成模式之后在控制树枝构件的类型就不是那么容易了。

posted on 2005-08-02 01:56 sky 阅读(171) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: