黑马程序员---File类,涉及到递归手法

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

 

File类

 * 用于将文件或文件夹封装成对象
 * 方便对文件或文件夹的属性信息进行操作
 * File对象可以作为参数传递给流的构造函数
 * 常见方法:
 * 1,创建
 * 2,删除

 

演示和练习

import java.io.*;
public class FileDemo 
{
	public static void main(String[] args) throws IOException
	{
		File f=new File("1.txt");//new File对象只是指定路径和文件名,并未创建文件。
		f.deleteOnExit();//退出程序时删除指定文件
		System.out.println(f.createNewFile());//调用了createNewFile()才会产生新文件,创建后返回true,若已有文件则返回false
		//System.out.println(f.delete());//返回boolean
		
		//1,创建
		sop(f.createNewFile());//返回boolean,如果已有文件返回false
		File dir=new File("abc\\bac");
		sop(dir.mkdirs());//创建路径(文件夹)
		
		//2,删除
		sop(f.delete());//删除文件
		f.deleteOnExit();//退出时删除
		//3,判断
		sop(f.canExecute());//是否能执行
		f.exists();//是否存在
		f.isFile();f.isDirectory();f.isHidden();f.isAbsolute();
		//4,获取信息
		f.getName();f.getPath();f.getParent();f.getAbsolutePath();f.lastModified();//最后修改时间
		f.length();
		
		//f1.renameTo(f2);//把f1改成f2,不但可以改名字,还可以改路径
		
		
	}
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}


 

import java.io.*;

public class File_listDemo 
{
	public static void main(String[] args)
	{
		//listRootsDemo();
		
		//listDemo();
		
		//listDemo1();
		
		listFileDemo();
	}
	//listRoots(),列出有效盘符
	public static void listRootsDemo()
	{
		File[] files=File.listRoots();//列出有效盘符,返回的是File型数组
		//高级for下
		for(File file:files)
		{
			System.out.println(file);
		}
	}
	
	//listDemo();列出指定盘下文件或文件夹名称,包含隐藏文件,返回的是字符串型数组
	public static void listDemo()
	{
		File f=new File("f:\\");
		String[] arr=f.list();
		for(String s:arr)
		{
			System.out.println(s);//包含隐藏文件
		}
	}
	
	//list(filter);可传入过滤器
	public static void listDemo1()
	{
		File f=new File("F:\\ipod 照片\\860OKMZO");
		String[] arr=f.list(new FilenameFilter()
		{
			public boolean accept(File f,String name)
			{
				return name.endsWith(".PNG");
			}
		});//用匿名内部类定义一个filter
		for(String s:arr)
		{
			System.out.println(s);//包含隐藏文件
		}
	}
	
	//listFile();实际开发中用,返回的是File型数组,可以 用get方法获取信息
	public static void listFileDemo()
	{
		File f=new File("F:\\ipod 照片\\860OKMZO");
		File[] arr=f.listFiles(new FilenameFilter()
		{
			public boolean accept(File f,String name)
			{
				return name.endsWith(".PNG");
			}
		});
		for(File s:arr)
		{
			System.out.println(s.getName()+"::"+s.length()/*获取的是文件的大小,单位字节*/);//包含隐藏文件
		}
	}
}

递归:

 

* 列出文件目录,包含子目录中的内容
 * 目录中还有目录,只要使用同一个列出目录功能的函数完成即可,可以在函数中调用本函数
 * 也就是函数自身调用自身
 * 这种编程手法叫
 * 递归
 * 递归要注意的
 * 1,限定条件(要判断,比如if)
 * 2,注意递归的次数,避免内存溢出。

import java.io.*;
class DiGui 
{
	public static void main(String[] args)
	{
		File dir=new File("F:\\");
		method(dir);
	}
	
	public static void method(File dir)//传入要列出的目录
	{
		File[] files=dir.listFiles();//listFile()将目录中的文件已文件数组形式返回
		for(int x=0;x<files.length;x++)
		{
			System.out.print(dir);
			if(files[x].isDirectory())//判断是否是目录
				method(files[x]);
			else
				System.out.println(files[x]);
		}
	}
	//转成二进制
	public static void toBin(int num)
	{
		if(num>0)
		{
			toBin(num/2);
			System.out.print(num%2);
		}
	}
	//1到某个数相加结果
	public static int Sum(int num)
	{
		if(num==1)
			return 1;
		return num+Sum(num-1);
	}
}


 

练习

/*将制定目录下所有的png文件的绝对路径信息存入到txt文件中

 * */

import java.io.*;
import java.util.*;
public class Test 
{
	public static void main(String[] args) throws IOException
	{
		File f=new File("C:\\Users\\dell\\Pictures\\SkyDrive\\图片");
		List<File> l=new ArrayList<File>();
		
		
		getDir(f,l);
		File f1=new File(f,"1.txt");
		toTxt(l,f1.toString());		
	}
	//定义递归方法获取PNG路径到集合
	public static void getDir(File fi,List<File> list)
	{
		File[] arr=fi.listFiles();
		for(File file:arr)
		{
			if(file.isDirectory())
				getDir(file,list);
			else
			{
				if(file.getName().endsWith(".PNG"))
					list.add(file);
			}
		}
	}
	public static void toTxt(List<File> l,String a) throws IOException
	{
		BufferedWriter br=null;
		try
		{
			br=new BufferedWriter(new FileWriter(a));
			for(File file:l)
			{
				String path=file.getAbsolutePath();
				br.write(path);
				br.newLine();
				br.flush();
			}
		}
		catch(IOException e)
		{
			throw e;
		}
		finally
		{
			try
			{if(br!=null)
				br.close();}
			catch(IOException e)
			{throw e;}
		}
				
	}
}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值