`

文件相关操作

阅读更多
文件操作类

1、获得文件夹下所有的文件
/**
	 * 给定路径下的所有目录和文件,包括其子目录下的目录和文件
	 * @param path 给定文件路径
	 * @return 返回给定路径下的所有目录和文件的链表
	 */
	private static void getAllFiles(String path,List<File> list){
		File[] childfiles = getAllChildFiles(path);
		if(childfiles == null || childfiles.length == 0)
			return;
		for(File f:childfiles){
			list.add(f);
			//如果是目录文件,则递归找到其子文件
			if(f.isDirectory())
				getAllFiles(f.getAbsolutePath(),list);
		}
	}
	/**
	 * 获得给定路径下的所有下级目录及其子目录下的所有文件
	 * @param path 给定目录路径
	 * @return
	 */
	public static List<File> listAllFiles(String path){
		List<File> list = new ArrayList<File>();
		getAllFiles(path,list);
		return list;
	}

2、文件删除
/**
	 * 删除给定文件或目录
	 * @param file 给定文件或目录
	 * @return
	 */
	public static void removeFile(File file){
		if(file.isDirectory()){
			File[] files = file.listFiles();
			for(int i=0;i<files.length;i++){
				removeFile(files[i]);
			}
		}
		file.delete();
	}

3、文件复制
/**
	 * 文件复制
	 * @param src 要复制的源文件
	 * @param des 目标文件
	 */
	public static void copyFile(File src,File des){
		try{
			FileInputStream fis = new FileInputStream(src);
			FileOutputStream fos = new FileOutputStream(des);
			FileChannel in = fis.getChannel();
			FileChannel out = fos.getChannel();
			ByteBuffer buf = ByteBuffer.allocateDirect(1024*5);
			while(true){
				buf.clear();
				int r = in.read(buf);
				if(r == -1)
					break;
				buf.flip();
				out.write(buf);
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}

/**
	 * 将一个源文件或目录复制文件到一个文件 例如src是"d:\abc",des是"e:\"。则将abc目录复制到"e:\"目录下,生成"e:\abc"。
	 * @param src 源文件或目录
	 * @param des 目标目录
	 */
	public static void copyFileOrDirectory(File src,File des){
		File desfile = new File(des,src.getName());
		if(src.isDirectory()){
			if(desfile.getAbsolutePath().equals(src.getAbsolutePath())){
				desfile = new File(des,src.getName()+" 复件(1)");
				int i=1;
				while(desfile.exists()){
					i++;
					desfile = new File(des,src.getName()+" 复件("+i+")");
				}
			}else if(desfile.getAbsolutePath().startsWith(src.getAbsolutePath()))
				return;
			desfile.mkdir();
			File[] files = src.listFiles();
			for(int i=0;i<files.length;i++){
				copyFileOrDirectory(files[i],desfile);
			}
		}else{
			copyFile(src,desfile);
		}
	}

4、文件分类
/**
	 * 将文件列表分成两类,一类是文件夹,一类是文件。
	 * @param list 文件列表
	 * @return 分类好的文件列表
	 */
	public static List<List<File>> classify(File[] list){
		List<File> dir = new ArrayList<File>();
		List<File> file = new ArrayList<File>();
		List<List<File>> classifyList = new ArrayList<List<File>>();
		classifyList.add(dir);
		classifyList.add(file);
		for(int i=0;i<list.length;i++){
			File f = list[i];
			if(f.isDirectory()){
				dir.add(f);
			}else{
				file.add(f);
			}
		}
		return classifyList;
	}


5、文件排序

/**
	 * SORT_DIRECTORY1是按目录子文件多少升序
	 * SORT_DIRECTORY2是按目录子文件多少降序
	 * SORT_DIRECTORY3是按目录名升序
	 * SORT_DIRECTORY4是按目录名降序
	 */
	public static final int SORT_DIRECTORY1 = 1;
	public static final int SORT_DIRECTORY2 = 2;
	public static final int SORT_DIRECTORY3 = 3;
	public static final int SORT_DIRECTORY4 = 4;
	/**
	 * 将一个目录列表进行排序,排序规则根据传入的排序类型不同而变化
	 * @param dir 需排序的目录列表
	 * @param sortType 排序类型
	 */
	public static void sortDirectory(List<File> dir,int sortType){
		if(sortType ==SORT_DIRECTORY1){
			Collections.sort(dir, new Comparator<File>(){
				public int compare(File o1, File o2) {
					return o2.listFiles().length - o1.listFiles().length;
				}
			});
		}else if(sortType == SORT_DIRECTORY2){
			Collections.sort(dir, new Comparator<File>(){
				public int compare(File o1, File o2) {
					return o1.listFiles().length - o2.listFiles().length;
				}
			});
		}else if(sortType == SORT_DIRECTORY3){
			Collections.sort(dir, new Comparator<File>(){
				public int compare(File o1, File o2) {
					return o1.getName().compareToIgnoreCase(o2.getName());
				}
			});
		}else if(sortType == SORT_DIRECTORY4){
			Collections.sort(dir, new Comparator<File>(){
				public int compare(File o1, File o2) {
					return o2.getName().compareToIgnoreCase(o1.getName());
				}
			});
		}
	}
	/**
	 * SORT_FILE1是按文件名升序
	 * SORT_FILE2是按文件名降序
	 * SORT_FILE3是按文件大小升序
	 * SORT_FILE4是按文件大小降序
	 */
	public static final int SORT_FILE1 = 1;
	public static final int SORT_FILE2 = 2;
	public static final int SORT_FILE3 = 3;
	public static final int SORT_FILE4 = 4;
	public static void sortFile(List<File> file,int sortType){
		if(sortType ==SORT_DIRECTORY1){
			Collections.sort(file, new Comparator<File>(){
				public int compare(File o1, File o2) {
					return o1.getName().compareToIgnoreCase(o2.getName());
				}
			});
		}else if(sortType == SORT_DIRECTORY2){
			Collections.sort(file, new Comparator<File>(){
				public int compare(File o1, File o2) {
					return o2.getName().compareToIgnoreCase(o1.getName());
				}
			});
		}else if(sortType == SORT_DIRECTORY3){
			Collections.sort(file, new Comparator<File>(){
				public int compare(File o1, File o2) {
					if(o1.length()>o2.length()){
						return 1;
					}else if(o1.length()<o2.length()){
						return -1;
					}else{
						return 0;
					}
				}
			});
		}else if(sortType == SORT_DIRECTORY4){
			Collections.sort(file, new Comparator<File>(){
				public int compare(File o1, File o2) {
					if(o1.length()>o2.length()){
						return -1;
					}else if(o1.length()<o2.length()){
						return 1;
					}else{
						return 0;
					}
				}
			});
		}
	}
分享到:
评论

相关推荐

    c语言文件相关操作

    很多人c语言学习的挺好了,但是关于文件相关的操作却很薄弱,以及文件系统也不熟悉,相信学了基本的文件操作,对于文件系统也会有所熟悉认识

    BAT批处理脚本-文件相关操作-安装inf文件.zip

    在这个名为"BAT批处理脚本-文件相关操作-安装inf文件.zip"的压缩包中,包含了针对文件操作,特别是安装INF文件的批处理脚本。 INF文件是Windows系统中用于驱动程序安装的一种特殊文本文件,其中包含了设备驱动的...

    BAT批处理脚本-文件相关操作-备份更新文件.zip

    在这个名为“BAT批处理脚本-文件相关操作-备份更新文件.zip”的压缩包中,包含了一个用于备份和更新文件的批处理脚本——“备份更新文件.bat”。下面我们将详细探讨批处理脚本的相关知识点。 首先,批处理脚本的...

    BAT批处理脚本-文件相关操作-文件创建&改名等操作.zip

    这个压缩包文件"BAT批处理脚本-文件相关操作-文件创建&改名等操作.zip"包含了关于如何使用批处理脚本来进行文件创建、改名等基本操作的示例。以下将详细讲解这些知识点。 1. **文件创建**:在批处理脚本中,我们...

    BAT批处理脚本-文件相关操作-wmic查找文件.zip

    在这个"BAT批处理脚本-文件相关操作-wmic查找文件.zip"压缩包中,包含了一个名为"wmic查找文件.bat"的文件,这个脚本利用了WMIC(Windows Management Instrumentation Command-line)工具来进行文件查找操作。...

    BAT批处理脚本-文件相关操作-常用注册表文件.zip

    在这个"BAT批处理脚本-文件相关操作-常用注册表文件.zip"压缩包中,包含了一个名为"常用注册表文件.CMD"的文件,这实际上是一个批处理脚本,尽管它被保存为CMD格式,可能是为了防止非预期的执行。用户在使用前需要将...

    BAT批处理脚本-文件相关操作-改名复制文件.zip

    在提供的压缩包"BAT批处理脚本-文件相关操作-改名复制文件.zip"中,包含了一个名为"改名复制文件.cmd"的批处理文件。这个脚本主要用于实现对文件的重命名和复制功能,对于需要批量处理大量文件的工作环境非常有用。 ...

    Python快速入门-文件相关操作

    Python快速入门-文件相关操作 Python 文件操作是 Python 编程的基础部分,掌握文件操作可以让开发者更好地处理数据。下面是关于 Python 文件操作的详细知识点: 文件对象申明与基本操作 在 Python 中,文件对象...

    BAT批处理脚本-文件相关操作-制作超大文件.bat.zip

    在这个名为“BAT批处理脚本-文件相关操作-制作超大文件.bat.zip”的压缩包中,包含了一个用于创建大文件的批处理脚本,原文件名为“制作超大文件.bat.txt”。为了使用这个脚本,你需要将文件扩展名从.txt更改为.bat...

    BAT批处理脚本-文件相关操作-根据TITLE重命名文件.zip

    在这个名为"BAT批处理脚本-文件相关操作-根据TITLE重命名文件.zip"的压缩包里,我们主要探讨的是如何使用批处理脚本来根据文件的标题信息进行重命名。 批处理脚本中的文件重命名操作通常涉及到`ren`或`rename`命令...

    BAT批处理脚本-文件相关操作-注销DLL文件.zip

    在“BAT批处理脚本-文件相关操作-注销DLL文件.zip”这个压缩包中,我们主要探讨的是如何使用批处理脚本来管理DLL(动态链接库)文件,尤其是注销DLL的操作。 DLL文件是Windows操作系统中的一个重要组成部分,它包含...

    BAT批处理脚本-文件相关操作-提取两个文件内容的不同之处.cmd.zip

    本压缩包文件“BAT批处理脚本-文件相关操作-提取两个文件内容的不同之处.cmd.zip”包含了用于比较并提取两个文本文件之间差异的批处理脚本。批处理脚本的编写可以极大地提高工作效率,减少手动操作的繁琐和出错可能...

    BAT批处理脚本-文件相关操作-92个.zip

    BAT批处理脚本-文件相关操作-92个 BAT批处理脚本-文本操作-52个 BAT批处理脚本-格式转换-9个 BAT批处理脚本-清理-清除-垃圾-28个 BAT批处理脚本-系统设置查询修改-硬件相关-139个 BAT批处理脚本-网络相关操作-44个

    BAT批处理脚本-文件相关操作-将txt文件名写入首行(保留源文件).zip

    标题"BAT批处理脚本-文件相关操作-将txt文件名写入首行(保留源文件)"表明这个脚本的功能是在所有指定的TXT文件中,将文件自身的名称添加到文件内容的首行,并且不改变原始文件。这样的功能对于文档管理和元数据记录...

    BAT批处理脚本-文件相关操作-限制条件批量建立文件夹.zip

    "BAT批处理脚本-文件相关操作-限制条件批量建立文件夹.zip"这个资源显然是一个关于如何利用批处理脚本来有条件地创建文件夹的教程或示例集合。下面,我们将深入探讨相关知识点。 首先,批处理脚本(BAT)是基于DOS...

    python的相关文件操作练习

    在“python的相关文件操作练习”中,我们将探讨如何使用Python进行文件的读取、写入、追加以及其他相关操作。通过实践这些基本方法,可以加深对Python文件操作的理解,并提升编程能力。 首先,让我们从打开文件开始...

    Java文件相关操作的MyEclipse Matisse窗体程序

    本篇文章将详细探讨如何在MyEclipse中利用Matisse设计窗体,并进行Java文件相关的操作。 首先,了解Matisse。Matisse是MyEclipse内置的图形化布局编辑器,专门用于创建Swing GUI。通过拖放组件、调整大小和设置属性...

    linux文件操作 linux操作系统 文件操作 常用命令

    - `close`函数用于关闭已打开的文件,释放与该文件相关的资源。 例如,一个简单的C程序`simple_write.c`可能会使用`write`函数将数据写入文件,而`simple_read.c`则会使用`read`函数从文件或标准输入读取数据并输出...

    PHP 文件操作函数

    在PHP编程语言中,文件操作是至关重要的一个环节,它涉及到读取、写入、...在实际开发中,结合具体需求,灵活运用这些函数,能解决大多数文件相关的编程问题。在实践中不断积累经验,才能更好地驾驭PHP的文件操作功能。

    文件有关操作

    在IT行业中,文件操作是日常开发中的重要环节,特别是在服务器端编程中,Servlet技术常常被用来处理客户端请求,包括对文件的各种操作。本工具类利用Java的Servlet API,实现了文件的创建、重命名等基本功能,这对于...

Global site tag (gtag.js) - Google Analytics