IO复习之File类

File类 的概述

File就是一个路径,这个路径可以是文件也可以是文件夹

      路径又分为绝对路径和相对路径

      绝对路径:从盘符开始 ,是一个固定路径

      相对路径:对于某个位置,在eclipse下是指当前项目下,在dos下指的是当前路径

File类的构造

       给File类构造函数传一个String类型的路径就可以创建对象

       File(String pathname):根据一个路径得到File对象
       File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
       File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象

File类的几大动能

      创建功能

            public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
    public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
    public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来

          注意: 如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。

     判断功能

                  public boolean isDirectory():判断是否是目录
                  public boolean isFile():判断是否是文件
        public boolean exists():判断是否存在
        public boolean canRead():判断是否可读
     public boolean canWrite():判断是否可写
      public boolean isHidden():判断是否隐藏

      删除功能 :

         public boolean delete():删除文件或者文件夹

      注意事项:
Java中的删除不走回收站,所以使用时一定要谨慎使用。
要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹,要想删除必须把里面内容先删掉,这里用递归比较多。

         重命名功能

          注意事项:
 如果路径名相同,就是改名。
如果路径名不同,就是改名并剪切

public static void main(String[] args) {
		File file = new File("ddd");
		File file2 = new File("fff");//如果路径相同就直接改名,路径不同就剪切并改名
		boolean b = file.renameTo(file2);//此处只能放一个file对象
		System.out.println(b);

              获取功能

   

public class File类的获取功能 {
	public static void main(String[] args) {
		/*获取功能
	* public String getAbsolutePath():获取绝对路径
	* public String getPath():获取相对路径
	* public String getName():获取名称
	* public long length():获取长度。字节数
	* public long lastModified():获取最后一次的修改时间,毫秒值
	* public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
	* public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组 */
		
		//demo();
		//demo2();
		File file2 = new File("F:\\day14java基础\\19");
			String[] arr1 = file2.list();//获取指定目录下的所有文件或者文件夹的名称数组
			for (String string : arr1) {
				System.out.println(string);
			}
			
			System.out.println("-------------");
			File[] subFiles = file2.listFiles();//获取指定目录下的所有文件或者文件夹的File数组
			for (File file : subFiles) {
				System.out.println(file);
			}
	}

	private static void demo2() {
		File file2 = new File("F:\\day14java基础\\19\\he.txt");
		long l = file2.length();//获取的是文件的长度,返回的是文件的字节数
		System.out.println(l);
		File file3 = new File("C:\\drivers");
		long l1 = file3.length();//      获取的是文件夹的长度,返回的是零
		System.out.println(l1);
	}

	private static void demo() {
		File file1 = new File("he.txt");
		System.out.println(file1.getAbsolutePath());//获取绝对路径
		System.out.println(file1.getPath());//获取相对路径
		System.out.println(file1.getName());//获取名称
	}

}
 文件名称过滤器的概述
       public String[] list(FilenameFilter filter)
       public File[] listFiles(FilenameFilter filter)

通过一个练习了解过滤器的使用

/*需求:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称*/
	public static void main(String[] args) {
		File file = new File("E:\\");       //创建File对象并关联E文件夹
		/*第一种方法
		 * String[] arr = file.list();     //获取这个文件路径下所有的文件和文件夹路径
		 * 
		for (String string : arr) {
			if (string.endsWith(".jpg")) {
				System.out.println(string);
			}
		}*/
		/*第二种方法  这种方法以后用的较多
		 * File[] subFiles = file.listFiles();//获取文件夹路径
		
		for (File file2 : subFiles) {    //将文件夹内容进行遍历
			if (file2.isFile()&&file.getName().endsWith(".jpg")) {//判断是文件并且后缀是.jpg
				System.out.println(file.getName());
			}
		}*/
		//第三种方法     这里用的是文件名称的过滤器
		String[] arr = file.list(new FilenameFilter(){//传入过滤器对象

			@Override
			public boolean accept(File file, String name) {
				File file2 = new File(file,name);//创建File对象
				                     //父   子
				return file2.isFile()&&file2.getName().endsWith(".jpg");
			}});//判断
		for (String s : arr) {
			System.out.println(s);//遍历并打印
		}
	}

}
File类的递归

public static void main(String[] args) {
		
	//普通方法    如果太大了就不能运行
		/* int result = 1;
			for (int i = 0; i < 5; i++) {
				result = result * i;
			}
		System.out.println(result);*/
		System.out.println(fun(5));
	}
	
	//利用递归进行运算
	/** 递归
	 * 方法自己调用自己
	 * 弊端:容易栈内存溢出
	 * 好处:不用知道调用次数
	 * 
	 * 构造函数不能使用递归
	 * 递归调用是否必须有返回值?
	 * 不一定(可以有也可以没有)*/
	public static int fun(int num){
		if(num == 1){
			return 1;
		}else{
			return num * fun(num-1);//自身方法的不断调用
		}
		
	}
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值