loading黑马程序员之IOFile(2-4)

-------android培训 、java培训、期待与您交流! ----------

/**

 * 流的局限性:只能操作数据,不能操作文件夹【拒绝访问异常】和文件属性
 * -------------------------------------------------------------------------
 * File类的常见方法:
 * 1.   增boolean createNewFile()【存在则不再创建】
 * 创建文件夹 mkdir(); mkdirs,创建多级目录文件夹
 * 删 delete()
 * deleteOnExit()【JVM退出时删除(临时文件)】
 * 2.判断
 * 是否是目录boolean isDirectory()
 * 是否是文件 isFile()
 * 是否存在 exists()
 * 是否是隐藏文件 isHidden()
 * 是否是绝对路径 isAbsolute()
 *
 * 2. 获取
 * 获取(绝对)路径 getPath() getAbsolutePath【文件可以不存在】
 * 绝对路径中的父目录 getParent()
 * 最后一次修改时间 long lastModified()
 * 长度:length()
 * file1.renameTo(file2)剪切,如果file2存在,剪切失败
 * 3。修改:用流
 *-------------------------------------------------------------------------
 * 注意:
 *1.判断文件是目录还是文件时,记得先判断该文件是否存在,因为不存在的文件既不是目录,也不是文件
 *2.文件名是xx.txt不一定就是文件夹哦,例如:
 * File file = new File("1.txt");
System.out.println(file.mkdir());
System.out.println("directory:"+file.isDirectory()); -----true
System.out.println("file:"+file.isFile()); -----false
当然,前提是file.mkdir()创建成功。

 */

package com.heima.io.file;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 
 * 要求:列出指定文件夹下所有文件【包括子文件夹下的】
 * 思想:递归:函数自己调用自己
 * 递归使用注意:
 * 						1.限定条件,就是出口(递归相当于是一个循环,限定条件就是循环结束条件)
 * 						2.每次递归都会在方法区开辟一块内存,而且都没有结束,一旦递归次数过多就容易产生内存溢出
 */
public class ListAllFiles {

	public static void main(String[] args) {
		List<File> list = getFiles(new File("hello"));
		for(File f : list){
			System.out.println(f.getName());
		}
	}

	/**
	 * 得到指定文件夹下所有文件【包括子文件夹下的文件】
	 * @param dir
	 * @return
	 */
	public static List<File> getFiles(File dir){
		List<File> list = new ArrayList<File>();
		File[] files = dir.listFiles();
		for(File f : files){
			if(f.isDirectory()){//如果是目录,递归
				for(File subf : getFiles(f)){
					list.add(subf);
				}
			}else{
				list.add(f);//是文件则添加进list
			}	
		}
		return list;
	}
	/**
	 * 删除指定文件夹下所有文件和文件夹
	 * @param dir
	 * @return
	 */
	public static boolean deleteFiles(File dir){
		boolean flag = true;
		if(dir.exists() && dir.isDirectory()){
			File[] files = dir.listFiles();
			for(File f : files){
				if(!f.isHidden()){
					if(f.isDirectory()){
						if(!deleteFiles(f)){
							flag = false;
						}
					}else{
						if(!f.delete()){//删除文件失败
							flag = false;
						}
					}
				}	
			}
			if(!dir.delete()){//删除文件夹失败
				flag = false;
			}
		}else{
			flag = false;
		}
		return flag;
	}
	
	
	
	
	/**
	 * 用递归实现十进制转二进制
	 * @param n
	 * @return
	 */
	public static String toBin(long n){
		StringBuffer sb = new StringBuffer();
		if(n>0){
			sb.append(toBin(n/2));
			sb.append(n%2);
		}
		return sb.toString();
	}
}

package com.heima.io.file;

import java.io.File;
import java.io.FilenameFilter;

/**
 * 功能:列出指定目录下所有Java文件
 * 对文件名过滤
 *
 */
public class FilenameFilterDemo {


	public static void main(String[] args) {
		File file = new File("src\\com\\heima\\basic");
		File[] list = file.listFiles(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				if(name.endsWith("java")){
					return true;
				}
				return false;
			}
		});
		for(File f : list){
			System.out.println(f.getName());
		}
	}

}

------- android培训  、 java培训 、期待与您交流! ----------



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值