隨筆-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);
           }
          }
          這個程序在便歷多文件時會出現(xiàn)問題?不知道問題在哪里?

          合成模式
                  合成模式他是一種樹型結構,他可以通過對合成的圖的單獨部分方法達到對整個合成圖方法問。他由三部分組成,抽象構件—Component和樹枝構件—Composite以及樹葉構件Leaf。合成模式分為兩種,一種是透明式的。另一個是安全式的合成模式。
                   透明式的合成模式和安全式的合成模式,他們的組成成分都一樣,他們的區(qū)別是:透明式的合成模式,他在抽象構件種增加了操作子類對象的一些接口,這樣在實現(xiàn)的過程中,無論是樹枝構件還是樹葉構件都必須實現(xiàn)這些接口,這對樹葉構件來說,這種接口實現(xiàn)是多余的,所以樹葉構件是通過平庸式的方式來實現(xiàn),這種實現(xiàn),將造成編譯時可以通過,但是當用戶在應用的過程過如果調(diào)用這些方法,將造成運行時的錯誤,這就造成了程序的不安全;而安全式的合成模式,他并沒有在抽象構件實現(xiàn)對子結點接口的申明,他是通過樹枝直接對管理子類所需要的方法進行申明,這就給程序帶來靈活性,但是也給程序帶來不便的管理性,這種實現(xiàn)使得程序不會出現(xiàn)運行時的錯誤。
                   一般我們在這樣的情況下應用合成模式:
                            1、當我們要體現(xiàn)構件的部分和整體的結構時。
                            2、當我們要要忽略個體構件與整體構件的區(qū)別時,并且要平等的對待個體構件和整體構件時。
                   使用合成構件有以下好處:
                            1、使用合成模式可以很容易的增加新構件的種類。
                            2、使用合成模式方便了用戶對構件的使用,因為他們不用擔心使用的是樹頁構件還是樹枝構件。
                   他的缺點:使用合成模式之后在控制樹枝構件的類型就不是那么容易了。

          posted on 2005-08-02 01:56 sky 閱讀(178) 評論(0)  編輯  收藏

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


          網(wǎng)站導航:
           
          <2005年8月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阿荣旗| 新郑市| 金堂县| 绥江县| 栖霞市| 浦东新区| 申扎县| 台东县| 达拉特旗| 北辰区| 镇安县| 温州市| 年辖:市辖区| 冀州市| 阳西县| 新绛县| 荥阳市| 南雄市| 梅州市| 元谋县| 剑川县| 颍上县| 抚顺市| 塘沽区| 左贡县| 威海市| 合江县| 龙江县| 卢龙县| 米脂县| 聊城市| 思南县| 修水县| 西畴县| 丰县| 浦东新区| 开江县| 漾濞| 祁阳县| 拜城县| 安岳县|