实现FilenameFilter接口
import java.io.File;
import java.io.FilenameFilter;
/**
* 过滤指定的文件
* 可以在遍历文件时,选择需要过滤的文件;弹出对话框选择文件时,过滤文件
* @author
*
*/
public class FileFilter implements FilenameFilter {
private boolean isDoc(String fileName)
{
if(fileName.endsWith(".docx"))
{
return false;
}
return true;
}
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return isDoc(name);
}
}
测试类
import java.io.File;
public class TestFilterFile {
public static void main(String[] args) {
File file =new File("D:"+File.separator+"developer");
File[] files=file.listFiles(new FileFilter());
for (File file2 : files) {
System.out.println(file2.getName());
}
}
}
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
/**
* 用线程监控文件目录的变化
*
* @author 时间 2013-4-11 下午10:28:05
* @version 1.0 </br>
*/
public class FilesMonitor implements Runnable
{
private String filePath = "D:\\testFile";
/**
* map : 存放目录中文件,key:文件名称+最后修改时间 value:File对象
*/
private static Map<String, File> map = new HashMap<String, File>();
/*
* (non-Javadoc)
*
* @see java.lang.Runnable#run()
*/
public void run()
{
while( true )
{
try
{
Thread.sleep( 3000 );
fileMonitor();
}
catch( Exception e )
{
// TODO: handle exception
}
}
}
public void fileMonitor()
{
File[] files = getFiles( filePath, null );
if( files != null && files.length > 0 )
{
String fName = "";
// if( files.length != map.size() )
// {
if( map.size() == 0 )
{
for( File file : files )
{
System.out.println( file.lastModified() );
fName = file.getName() + file.lastModified();
map.put( fName, file );
System.out.println( "新增文件: " + fName );
}
}
else
{
if( map.size() > files.length )
{
List<String> removeName = new ArrayList<String>();
Iterator<String> iter = map.keySet().iterator();
int j = 0;
while( iter.hasNext() )
{
String key = iter.next();
if( key != null && key.length() > 0 )
{
for( File file : files )
{
fName = file.getName() + file.lastModified();
if( fName.equals( key ) )
{
j = 1;
break;
}
}
if( j != 1 )
{
removeName.add( key );
map.remove( key );
}
j = 0;
}
if( removeName.size() > 0 )
{
for( String item : removeName )
{
System.out.println( "减少文件: " + item );
}
}
}
}
else
{
for( File file : files )
{
fName = file.getName() + file.lastModified();
if( !map.containsKey( fName ) )
{
map.put( fName, file );
System.out.println( "新增加的文件: " + fName );
}
}
}
}
// }
// else
// {
// map.clear();
// for( File file : files )
// {
// fName = file.getName() + file.lastModified();
// map.put( fName, file );
// }
// }
// System.out.println( "此缓存中文件的个数: " + map.size() );
}
}
/**
* 获取文件
*
* @author 时间 2013-4-11 下午11:31:49
* @param filePath
* 文件目录
* @param fileName
* 文件名
* @return
*/
public File[] getFiles( String filePath, String fileName )
{
File[] files = null;
if( StringUtils.isEmpty( fileName ) )
{
File doc = new File( filePath );
if( doc.isDirectory() )
{
String[] fileNameArr = doc.list();
if( fileNameArr.length > 0 )
{
files = new File[ fileNameArr.length ];
for( int i = 0; i < fileNameArr.length; i++ )
{
fileName = fileNameArr[ i ];
String fileAbspath = filePath + File.separator + fileName;
File regInfoFile = new File( fileAbspath );
files[ i ] = regInfoFile;
}
}
}
}
else
{
String path = filePath + File.separator + fileName;
File doc = new File( path );
if( doc.isFile() )
{
files = new File[ 1 ];
files[ 0 ] = doc;
}
}
return files;
}
public void show()
{
FilesMonitor t = new FilesMonitor();
Thread thread = new Thread( t );
thread.setName( "eshore" );
thread.start();
}
public static void main( String[] args )
{
FilesMonitor t = new FilesMonitor();
t.show();
}
}
对文件夹的监控,我记得好像有FileMonitor,应该是第三方jar包,要实现一个接口,里面有增加、删除、更新文件等方法的,自己还写过例子,但是忘记了,怎么也找不到了,有知道的同学请知会一下。