`
huxiaojun_198213
  • 浏览: 103574 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

文件选择器

阅读更多
经常我老婆让我帮她从她的手机导出图片,为了避免下次再打搅我玩游戏,索性动手写了一段程序.以下程序有重复造轮子之嫌(这个需求完全可以使用Apache Commons IO来处理),但自己动手玩一下,也能从中体会良多.

package com.app.common.util.file.selector;

import java.io.File;
import java.io.FileFilter;
import java.util.*;

/**
 * 此过滤器用来过滤大于最后修改时间之后的文件
 * @author Administrator
 *
 */
public class AfterLastUpdateFileFilter implements FileFilter {

	private Date lastUpdateTime;

	public AfterLastUpdateFileFilter(Date lastUpdateTime) {

		this.lastUpdateTime = lastUpdateTime;
	}

	@Override
	public boolean accept(File file) {
		Date fileDate = new Date(file.lastModified());
		return fileDate.after(lastUpdateTime);
	}

}



package com.app.common.util.file.selector;

import java.io.*;
import java.util.*;

/**
 * 此过滤器属于组合过滤器,仅当两个过滤器验证通过,才会选中文件
 * @author Administrator
 *
 */
public class CompositeFileFilter implements FileFilter {

	private List<FileFilter> filters;

	public CompositeFileFilter(List<FileFilter> filters) {
		this.filters = filters;
	}

	@Override
	public boolean accept(File file) {
		for (FileFilter filter : filters) {
			if (filter.accept(file) == false) {
				return false;
			}
		}
		return true;
	}
}




package com.app.common.util.file.selector;

import java.io.File;
import java.io.FileFilter;

/**
 * 文件扩展名过滤器
 * @author Administrator
 *
 */
public class FileExtensionFilter implements FileFilter {

	private String extension;

	public FileExtensionFilter(String extension) {
		this.extension = extension;
	}

	@Override
	public boolean accept(File file) {
		if(file.isDirectory()){
			return false;
		}
		return file.getName().toLowerCase().endsWith(extension.toLowerCase());
	}

}



package com.app.common.util.file.selector;

import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

import org.apache.commons.io.IOUtils;

/**
 * 文件选择测试类
 * @author Administrator
 *
 */
public class FileSelector {

	public void copyFiles(File inputDir, CompositeFileFilter fileFilter,File outDir) {
		File[] files = null;
		InputStream in = null;
		OutputStream output = null;
		if (inputDir != null && inputDir.exists() && inputDir.isDirectory()
				&& inputDir.canRead()) {
			files = inputDir.listFiles(fileFilter);
			System.out.println("select files length: " + files.length);
			for (File file : files) {
				try {
					in = new FileInputStream(file);
					System.out.println("handle: " + file.getName());
					output = new FileOutputStream(new File(outDir,
							file.getName()));
					IOUtils.copy(in, output);
				} catch (IOException e) {
					e.printStackTrace();
				} finally {
					if (null != output) {
						try {
							output.close();
						} catch (IOException e) {
							e.printStackTrace();
						}
						output = null;
					}
					if (null != in) {
						try {
							in.close();
						} catch (IOException e) {
							e.printStackTrace();
						}
						in = null;
					}
				}

			}
		}
	}

	public static void main(String[] args) throws ParseException {
		File inputDir = new File("f:/pic");
		File outDir = new File("f:/test/");
		FileSelector selector = new FileSelector();
		Date lastUpdateTime = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		lastUpdateTime = sdf.parse("2012-10-28 23:59:59");
		List<FileFilter> filters = new ArrayList<FileFilter>();
		filters.add(new AfterLastUpdateFileFilter(lastUpdateTime));
		filters.add(new FileExtensionFilter(".jpg"));
		CompositeFileFilter compositeFileFilter = new CompositeFileFilter(
				filters);
		selector.copyFiles(inputDir, compositeFileFilter, outDir);
		System.out.println("finished...");
	}
}



当然还可以实现其它的过滤器,不过说真的,Apache Commons IO里的过滤器已经够强大了,完全可以用它的.除此之外,Apache Commons IO里还有很多比较器,完全可以实现你的排序要求.
分享到:
评论

相关推荐

    Android 文件选择器(支持选择u盘).zip

    在Android平台上,开发一款能够支持选择U盘的文件选择器是一项具有挑战性的任务,因为U盘在Android设备上的接入通常需要特殊的处理。本项目“Android 文件选择器(支持选择u盘)”提供了一个完整的解决方案,使得...

    Android文件上传,文件选择器,多选

    在Android应用开发中,文件上传和文件选择器是常见的功能需求。用户可能需要从设备存储中选择一个或多个文件,例如图片、文档或音频文件,然后上传到服务器或进行其他操作。本文将深入探讨如何在Android平台上实现...

    android文件选择器

    在Android平台上,开发一款“另类的文件选择器”是一个创新且实用的功能,它能够为用户提供不同于系统默认的文件浏览和选取体验。Android文件选择器的设计和实现涉及到多个技术点,包括文件系统的访问、UI设计、多选...

    Android中文件选择器的实现(代码)

    在Android开发中,文件选择器是一个非常常见的组件,它允许用户在设备的文件系统中浏览并选择文件。本文将深入探讨如何在Android应用中实现一个文件选择器,并提供相关的代码示例。 首先,理解Android的文件系统至...

    Android简易文件选择器

    在Android开发中,有时我们需要为用户提供一种方便的方式来选择设备上的文件,这通常涉及到创建自定义的文件选择器。"Android简易文件选择器"是一个这样的工具,它具备多选、反选和全选功能,旨在优化用户体验并解决...

    android图片/视频文件选择器

    在Android应用开发中,"android图片/视频文件选择器"是一个至关重要的组件,它允许用户在设备上方便地选择图片和视频。这个特定的选择器具备多种功能,包括多选、单选模式,以及内置的拍摄和裁剪工具,极大地提升了...

    Android文件选择器

    在Android开发中,文件选择器是一个重要的组件,它允许用户在设备上选择文件或目录,以便进行读取、写入或其他操作。标题“Android文件选择器”表明我们讨论的是一个自定义实现的解决方案,用于解决Android系统原生...

    Java文件选择器Java文件选择器Java文件选择器Java文件选择器

    根据提供的信息,我们可以总结出以下有关“Java文件选择器”的知识点: ### Java 文件选择器概述 在Java开发中,文件选择器是一种常见的图形用户界面组件,用于帮助用户从文件系统中选择文件或目录。通常,这涉及...

    有用的例子啊JAVA文件选择器

    在Java编程中,文件选择器(FileChooser)是一个非常实用的工具,它允许用户从本地文件系统中选择文件或目录。这个“有用的例子啊JAVA文件选择器”提供的示例代码可以帮助我们更好地理解如何在Java应用程序中集成...

    文件选择器FolderChooser

    "文件选择器FolderChooser"是一款专为Android平台设计的应用,旨在提供美观且高效的文件和文件夹选择功能。这款选择器不仅界面简洁,还具备高级特性,如筛选特定类型的文件以及自定义文件图标,使得用户在处理文件时...

    使用JavaScript实现一个本地文件选择器功能

    在JavaScript中实现一个本地文件选择器功能,是前端开发中常见的需求,这通常涉及到HTML5的File API。这个功能允许用户从他们的计算机上选择文件,并且可以进行预览、上传或者其他处理。以下将详细讲解如何实现这个...

    简单的android文件选择器工程

    在Android开发中,文件选择器是一个非常常见的组件,它允许用户在设备的文件系统中浏览并选择文件。本文将深入探讨一个基于Android的简单文件选择器工程,该工程是通过参考论坛上的示例并进行实践而创建的。下面我们...

    Unity3D文件选择器1

    Unity3D文件选择器 在 Unity3D 中,文件选择器是一个非常重要的组件,它允许用户选择文件或目录,以便在 Unity3D 项目中使用。今天,我们将讲解 Unity3D 文件选择器的实现原理和实现细节。 文件选择器的实现原理 -...

    Android代码-文件选择器.zip

    【标题】"Android代码-文件选择器.zip"指的是一个包含Android平台上实现文件选择功能的代码资源包。在Android开发中,文件选择器是用户界面的一个重要组成部分,它允许用户浏览和选择存储在设备上的文件,如图片、...

    Android高级应用源码-文件选择器.rar

    在Android开发中,文件选择器是一个非常常见的组件,它允许用户在设备的文件系统中浏览并选择所需的文件或目录。本资源"Android高级应用源码-文件选择器.rar"提供了一个实现这一功能的源代码示例,对于深入理解...

    文件选择器源码.zip

    文件选择器源码,aFileChooser是一个Android库项目,简化了过程,提出一个文件选择器。意图为第三方应用程序组件提供钩子的能力为内容的选择。这对媒体文件运行良好,但如果你希望用户能够选择任何文件,他们必须安装一...

    Java文件选择器源代码

    Java文件选择器源代码是用于在Java应用程序中实现文件选择功能的代码片段或库。它通常包含一组类和方法,允许用户浏览并选择本地文件系统中的文件或目录,类似于操作系统提供的文件选择对话框。在Java中,我们可以...

    AutoJs源码-文件选择器

    AutoJs源码-文件选择器。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!。3...

    Java Swing组件文件选择器JFileChooser简单用法示例

    Java Swing组件文件选择器JFileChooser简单用法示例 Java Swing组件文件选择器JFileChooser是Java Swing中一个功能强大且灵活的文件选择器组件,可以用来选择文件或文件夹。下面我们将通过一个简单的示例来介绍...

    C#文件选择器FolderBrowser_Code.zip

    标题"C#文件选择器FolderBrowser_Code.zip"表明这是一个与C#编程语言相关的项目,它包含一个文件选择器功能,能够允许用户在WPF(Windows Presentation Foundation)环境中选择文件夹和文件。WPF是.NET框架的一部分...

Global site tag (gtag.js) - Google Analytics