Topic: 请教:如何取得某一目录下的所有文件名?

  Print this page

1.请教:如何取得某一目录下的所有文件名? Copy to clipboard
Posted by: focus
Posted on: 2005-09-13 11:32

请教:如何取得某一目录下的所有文件名?

2.Re:请教:如何取得某一目录下的所有文件名? [Re: focus] Copy to clipboard
Posted by: why
Posted on: 2005-09-13 11:38

http://javaalmanac.com/egs/java.io/GetFiles.html

3.Re:请教:如何取得某一目录下的所有文件名? [Re: focus] Copy to clipboard
Posted by: JavaandC
Posted on: 2005-09-13 12:21

在IO包里面有个
list(); 返回当前目录下的所有文件
list(FilenameFilter filter);通过过滤器返回当前目录下符合你想要的所有文件

这两个方法全部返回String 数组

4.Re:请教:如何取得某一目录下的所有文件名? [Re: focus] Copy to clipboard
Posted by: focus
Posted on: 2005-09-13 14:47

谢谢各位大虾了!还介绍了个不错的网站。外国人的东西确实好啊。
初学java不久,多多关照。
我们用的QQ程序,在你发送或者接收一些图片时,程序将会自动把这些图片存到这样的文件夹中去(如:D:\Program Files\Tencent\QQ\93708213\image)。
确实很方便,但是有个漏洞,就是:它会保存大量同样的图片,即发送/接收一次便重复保存一次。我的文件夹里的500张图片中大约80张都是相同的,删起来很不方便。与是就编写了下面的代码:
/*
* Created on 2005/09/13
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package deleteImage;

import java.io.File;
import java.util.HashSet;
import java.util.Set;

/**
* @author laojiao
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class deleteImage {
  
  public static void main(String args[]){
  
    Set fileLenSet = new HashSet();    
    File fdir = new File("D:\\image");  
   String[] fileList = fdir.list();
  
   if (fileList == null) {
     //Either dir does not exist or is not a directory
     System.out.println("This directory doesn't exists!");
   }
   else {
   for (int i=0; i<fileList.length; i++) {
   // Get filename of file or directory
   String filename = fileList[i];
   //System.out.println("D:\\image"+" Images"+i+" "+filename);
  
        if (filename.startsWith("{") && (filename.lastIndexOf("}") > (filename.length()-7))){
          File f = new File("D:\\image" +"\\"+ filename);
                              
          if ( fileLenSet.contains( Long.toString(f.length()) ) ){          
            f.delete();
            System.out.println("The image of " +filename+ " " +
                "created by QQ.exe automaticly on"+ f.lastModified()+ "that is be deleted.");
          }
                              
          fileLenSet.add( Long.toString(f.length()) );                    
        }
     
   }

   }

  }

}

5.Re:请教:如何取得某一目录下的所有文件名? [Re: focus] Copy to clipboard
Posted by: focus
Posted on: 2005-09-13 14:51

很土的方法,而且不够精确。
我想用 直接分辩二进制(图片就是而进制流)的办法 肯定会很准确的,但是不知道该用什么样的类的什么样的方法。
各位哥哥有什么高见啊?

6.Re:请教:如何取得某一目录下的所有文件名? [Re: focus] Copy to clipboard
Posted by: JavaandC
Posted on: 2005-09-13 16:11

你可以在保存接收来的文件之前,先让程序检测是否有重复的文件存在,如果有你可以用改名的方式,自动将新文件的名字改掉,改成什么形式的名字,那就要看你自己想改成什么样的名字了。

检测当前文件是否存在的方法:
在IO包内:
exists(); 返回boolean值

7.Re:请教:如何取得某一目录下的所有文件名? [Re: focus] Copy to clipboard
Posted by: JavaandC
Posted on: 2005-09-13 16:12

还有:
更改文件名的方法:
也在IO包内:
renameTo(File); 同样返回boolean值

8.Re:请教:如何取得某一目录下的所有文件名? [Re: focus] Copy to clipboard
Posted by: JavaandC
Posted on: 2005-09-13 16:18

当然如果程序利用上面的方法判断这个文件已经存在的话,你可以不进行保存呀。

9.Re:请教:如何取得某一目录下的所有文件名? [Re: focus] Copy to clipboard
Posted by: q_yuan
Posted on: 2005-09-14 08:48

先判断是不是目录,再用文件列表!不就OK了


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923