貓博士

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            2 隨筆 :: 0 文章 :: 0 評論 :: 0 Trackbacks

          2010年1月8日 #

          1. 遞歸列出指定名字的文件夾
           1    private void listDirs(String path, String keyWord) {
           2        boolean flag = false;
           3        File rootDir = new File(path);
           4        // 判斷文件夾是否存在,如果不存在,返回
           5        if (!rootDir.exists()) {
           6            return;
           7        }

           8        File[] childFiles = rootDir.listFiles();
           9        if (childFiles == null || childFiles.length == 0{
          10            return;
          11        }

          12        for (File file : childFiles) {
          13            if (file.isDirectory()) {
          14                if (file.getName().toString().equals(keyWord)) {
          15                    System.out.println(file.getAbsolutePath());
          16                    flag = deleteDirectory(file.getAbsolutePath());
          17                    if (!flag){
          18                        break;
          19                    }

          20                }

          21                listDirs(file.getAbsolutePath(), keyWord);
          22            }
           else {
          23                continue;
          24            }

          25        }

          26    }

          27

          2. 刪除目錄以及目錄下的文件
           1    public boolean deleteDirectory(String path) {
           2        boolean flag = false;
           3        // 如果path不以文件分隔符結尾,自動添加文件分隔符
           4        if (!path.endsWith(File.separator)) {
           5            path = path + File.separator;
           6        }

           7        File dirFile = new File(path);
           8        // 如果dir對應的文件不存在,或者不是一個目錄,則退出
           9        if (!dirFile.exists() || !dirFile.isDirectory()) {
          10            return false;
          11        }

          12        flag = true;
          13        // 刪除文件夾下的所有文件(包括子目錄)
          14        File[] files = dirFile.listFiles();
          15        for (int i = 0; i < files.length; i++{
          16            // 刪除子文件
          17            if (files[i].isFile()) {
          18                flag = deleteFile(files[i].getAbsolutePath());
          19                if (!flag)
          20                    break;
          21            }
           // 刪除子目錄
          22            else {
          23                flag = deleteDirectory(files[i].getAbsolutePath());
          24                if (!flag)
          25                    break;
          26            }

          27        }

          28        if (!flag)
          29            return false;
          30        // 刪除當前目錄
          31        if (dirFile.delete()) {
          32            return true;
          33        }
           else {
          34            return false;
          35        }

          36    }

          37

          3. 刪除文件
           1    public boolean deleteFile(String path) {
           2        boolean flag = false;
           3        File file = new File(path);
           4        // 路徑為文件且不為空則進行刪除
           5        if (file.isFile() && file.exists()) {
           6            file.delete();
           7            flag = true;
           8        }

           9        return flag;
          10    }

          11
          posted @ 2010-01-13 13:58 貓博士 閱讀(123) | 評論 (0)編輯 收藏

            某烤白馬問我怎樣在一個Java窗體里面只能輸入數字。這個問題我以前在做Web項目的時候碰到過,是采用的JS監聽鍵盤的方式做的。但是在窗體里面怎么做,還沒有做過。

            不知道很簡單,百老師跟谷老師都是好老師。于是找了下。

            在CSDN上面看到有人有同樣的問題,點此查看。看了下知道了原來可以采用PlainDocument接口的方式實現,但是我看了下代碼,好像是輸入之后再去做判斷,如果不是漢字就去掉該字符。好像有點不符合需求。另外一個方式是采用監聽器的方式。看了下,參照他的代碼寫了一段自己的代碼。

           

           1    private class NumListener implements KeyListener {
           2        public void keyPressed(KeyEvent e) {
           3            // TODO Auto-generated method stub
           4
           5        }

           6
           7        public void keyReleased(KeyEvent e) {
           8            // TODO Auto-generated method stub
           9            
          10        }

          11
          12        public void keyTyped(KeyEvent e) {
          13            
          14            char code = e.getKeyChar();
          15            
          16            if (isNumber(code)){
          17                return;
          18            }
           else {
          19                e.consume();
          20            }

          21        }

          22
          23
          24    }

          25
          26

           

          對比一下CSDN上那位兄弟的回答,我這里少了很多,不知道會不會有什么問題。說實話,我不明白他為什么要判斷輸入框的類型。而判斷是否是數字的代碼我覺得還可以采用正則表達式,也改造了一下。

           

           1    private static Pattern NUM_PATTERN = Pattern.compile("\\d*");
           2        protected boolean isNumber(char code) {
           3//            if ((code == '0') || (code == '1') || (code == '2')
           4//                    || (code == '3') || (code == '4') || (code == '5')
           5//                    || (code == '6') || (code == '7') || (code == '8')
           6//                    || (code == '9')){
           7//                return true;
           8//            }
           9            Matcher matcher = NUM_PATTERN.matcher(String.valueOf(code));
          10            if (matcher.matches()){
          11                return true;
          12            }

          13
          14            return false;
          15        }

          16
          17

           

          代碼還是需要完善,還有對于復制粘貼沒有處理。

           

          posted @ 2010-01-08 09:06 貓博士 閱讀(211) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 罗田县| 天峨县| 嵊州市| 银川市| 剑川县| 颍上县| 墨玉县| 凭祥市| 贵德县| 容城县| 周口市| 刚察县| 金华市| 铁岭县| 桦南县| 仙桃市| 合山市| 潮州市| 比如县| 图木舒克市| 汉寿县| 德安县| 泗洪县| 北辰区| 雷波县| 柳江县| 淮安市| 静海县| 舞钢市| 磐石市| 昭通市| 晋江市| 清镇市| 滦平县| 蓬安县| 宜宾市| 安泽县| 资溪县| 金阳县| 达尔| 万荣县|