`
airfly2013
  • 浏览: 18833 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员 java_File类,递归

 
阅读更多

 

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

 

File类

 

File是用来操作文件的类,表示文件和目录路径名的抽象表示形式。也就是说File既可以表示具体的文件,也可以表示文件夹,并且这个File对象对应的文件或文件夹在硬盘可能是不存在的。

 

用来将文件或者文件夹封装成对象

方便对文件与文件件进行操作

File对象可以作为参数传给流的构造函数,此时文件将作为流的起点或终点

 

 

File类常见方法:

 

1,创建。

boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。

和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。

boolean mkdir():创建文件夹。

boolean mkdirs():创建多级文件夹。

 

File的构造函数,有四种方式创建File对象。

//创建File对象
	public static void consMethod()
	{
		//将a.txt封装成file对象。可以将已有的和为出现的文件或者文件夹封装成对象。
		File f1 = new File("a.txt");
		File f2 = new File("c:\\abc","b.txt");
		File d = new File("c:\\abc");
		File f3 = new File(d,"c.txt");
		//separator表示分隔符,适用于各个系统,在Windows上表示"\\"
		File f4 = new File("c:"+File.separator+"abc"+File.separator+"zzz"+File.separator+"a.txt");

	}

 

只创建一个File对象,它在硬盘上是不存在在的,这时需要调用createNewFile,mkdirs来创建文件或目录。

public static void method_2() throws IOException
	{
		//此时f文件在硬盘上不存在,f只表示一个抽象路径
		File f = new File("file.txt");
		//在硬盘上创建f文件
		sop(f.createNewFile());

		File dir = new File("abc\\kkk\\a\\a\\dd\\ee\\qq\\aaa");
		//创建多级文件夹
		sop("mkdir:"+dir.mkdirs());
	}

 

 

2,删除。

boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回false。

void deleteOnExit();在程序退出时删除指定文件。

 

 

3,判断。

boolean exists() :文件是否存在.

isFile():判断是否为文件

isDirectory();判断是否为文件夹

isHidden();测试此抽象路径名指定的文件是否是一个隐藏文件。

isAbsolute();测试此抽象路径名是否为绝对路径名。

 

4,获取信息。

getName():返回由此抽象路径名表示的文件或目录的名称。

getPath():将此抽象路径名转换为一个路径名字符串。

getParent(): 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null

 

getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。

long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。

long length()  返回由此抽象路径名表示的文件的长度。如果此路径名表示一个目录,则返回值是不确定的。

 

public static void method_4()
	{
		File f = new File("file.txt");
		
		//返回创建f时的路径就,即相对路径
		sop("path:"+f.getPath());
		
		//返回绝对路径
		sop("abspath:"+f.getAbsolutePath());
		
		sop("parent:"+f.getParent());
		//该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。
		//如果相对路径中有上一层目录那么该目录就是返回结果。

	}

 

 

 

 

list方法

 

String[]  list()

返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

public static void listDemo()
	{
		File f = new File("c:\\abc.txt");

		String[] names = f.list();//调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
		for(String name : names)
		{
			System.out.println(name);
		}
	}

 

 

 

listFiles方法

 

返回一个抽象路径数组,这些路径名表示才抽象路径表示的目录中的文件

File dir = new File("c:\\");
		File[] files = dir.listFiles();

		for(File f : files)
		{
			System.out.println(f.getName()+"::"+f.length());
		}

 

listFiles中可以传入一个过滤器,这时只有符合过滤条件的文件会被返回。

 

String[] arr = dir.list(new FilenameFilter()
		{
			//accept用于判断文件是否符合条件
			public boolean accept(File dir,String name)
			{
				//只有bmp格式文件会被返回
				return name.endsWith(".bmp");

			}
		});

 

 

 

递归

 

可以理解为函数自己调用自己。

注意:递归时一定要明确结束条件。

应用场景:

当某一功能要重复使用时。

 

通过方法toBin来演示,toBin的作用获取num的二进制,这就要不断的除以2。在方法内部调自己,直到num除以2为0。调用sop方法打印每次num除以2的余数,不过要调用完toBin方法后才执行,所以首先打印在递归中最后被调用的toBin方法中数据。

 

public static void toBin(int num)
	{
		if(num>0)
		{
			toBin(num/2);
			System.out.println(num%2);
		}
	}

 

截图中方法toBin自己调用自己,直到最后条件终止不再调用,此时会依次返回,执行toBin中的剩余部分。

 


 

 

 

 

列出指定目录下文件或者文件夹,包含子目录中的内容。

也就是列出指定目录下所有内容。

package itcast.heima;

import java.io.File;

public class FileDemo3 {
	public static void main(String[] args) {
		File f = new File("D:\\QQ");
		showDir(f,0);
	}
	
	//此处用于标示每一级目录,每增加一级,增加一个"--"
	public static String getLevel(int level){
		StringBuilder sb = new StringBuilder();
		sb.append("|");
		for(int i=0;i<level;i++){
			sb.append("--");
		}
		return sb.toString();
	}
	
	public static void showDir(File file,int level){
		//首先打印本级目录
		System.out.println(getLevel(level)+file.getName());
		level++;//目录级别自增
		//将文件夹中的文件(也包括文件夹)放入数组中
		File[] files = file.listFiles();
		
		for(File f:files){
			//判断f是否为文件夹
			if(f.isDirectory())
			{		//如果是文件及,继续调用自己		
				showDir(f,level);			
			}	
		else
			System.out.println(getLevel(level)+f);
		}
		
	}
}

 

 

                              

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

  • 大小: 62.3 KB
  • 大小: 55.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics