隨筆-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 閱讀(177) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 新津县| 调兵山市| 错那县| 安宁市| 会泽县| 黄大仙区| 滨州市| 呈贡县| 广宗县| 甘南县| 公安县| 双桥区| 沙坪坝区| 邵东县| 东莞市| 惠来县| 衢州市| 安达市| 阿尔山市| 陈巴尔虎旗| 荥阳市| 辽宁省| 平舆县| 冀州市| 日喀则市| 青岛市| 关岭| 贵港市| 昭平县| 青浦区| 田东县| 阿图什市| 兰溪市| 淮滨县| 什邡市| 巧家县| 博乐市| 柳河县| 曲阜市| 湘乡市| 绵竹市|