猫博士

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  2 随笔 :: 0 文章 :: 0 评论 :: 0 Trackbacks

2010年1月13日 #

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 猫博士 阅读(117) | 评论 (0)编辑 收藏

2010年1月8日 #

  某烤白马问我怎样在一个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 猫博士 阅读(204) | 评论 (0)编辑 收藏

仅列出标题