黑马程序员——JAVA笔记——File

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


File类时用来描述文件的一个类。

File类的构造方法:

	public static void consMethod()
	{
		//将a.txt封装成file对象。可以将已有的和未出现的文件或者文件夹封装成对象。
		File f1=new File("a.txt");
		
		//
		File f2=new File("E:\\java\\exam","b.txt");
		
		File d=new File("E:\\java\\exam");
		File f3=new File(d,"c.txt");
		
		System.out.println("f1:"+f1);
		System.out.println("f2:"+f2);
		System.out.println("f3:"+f3);
		
		File f4=new File("c:" +File.separator+"abc" +File.separator+"zzz" +File.separator+"a.txt");
	}


File类的常见方法:

1.创建。
boolean createNewFile(); 在指定位置创建文件,如果该文件已经存在,则不创建返回false。
和输出流不一样,输出流对象一建立就会创建文件。且文件已经存在会覆盖。
boolean mkdir(); 创建文件夹。

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

	public static void method()
	{
		File f=new File("file.txt");
		System.out.println("exists:"+f.exists());
//		System.out.println("Execute:"+f.canExecute());
		
		//创建文件夹
		File dir =new File("abc\\kk");
		System.out.println("mkdir:"+dir.mkdir());
	}

2.删除。
boolean delete(); 删除失败返回false。

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

	public static void method() throws IOException
	{
		File f=new File("file.txt");
		f.deleteOnExit();
		System.out.println("delete:"+f.delete());
	}

3.判断。
boolean exists(); 文件是否存在。
isFile(); 是否是文件
isDirectory(); 是否是目录
isHidden(); 是否隐藏

isAbsolute(); 是否是绝对路径

	public static void method() throws IOException
	{
		File f=new File("E:\\java\\exam\\file.txt");
		
		//在判断文件对象是否是文件对象或者目录事,必须先判断该文件对象封装的内容是否存在。
		//通过exists判断。
		System.out.println("dir:"+f.isDirectory());
		System.out.println("file:"+f.isFile());
		
		System.out.println("absolute:"+f.isAbsolute());
	}

4.获取信息。
getName();
getPath();
getParent();
getAbolutePath();
long lastMoidfied();

long length();

	public static void method()
	{
		File f=new File("file.txt");
		
		System.out.println("path:"+f.getPath());
		System.out.println("abspath:"+f.getAbsolutePath());
		System.out.println("parent:"+f.getParent());//该方法返回的是绝对路径中的父目录
							//如果获取的是相对路径,返回null
							//如果相对路径中有上一层目录那么该目录就是返回结果。
		
	}
5.移动文件。

renameTo();

	public static void method()
	{
		File f1=new File("E:\\java\\exam\\123.jpg");
		File f2=new File("E:\\java\\exam\\111.jpg");
		System.out.println("rename:"+f2.renameTo(f1));//可移动,类似于复制
	}


练习:列出指定目录下文件或者文件夹,包含子目录中的内容。也就是列出指定目录下所有内容。

因为目录中海油目录,只要视同同一个列出目录功能的函数即可。

在列出过程中出现的还是目录的话,还可以再次调用本功能。也就是函数自身调用自身。

这种表现形式,或者编程手法,成为递归。

递归要注意:

1.限定条件

2.要注意递归的次数。尽量避免内存溢出。

class Demo
{
	public static void main(String[] args)
	{
		File dir=new File("E:\\java\\exam");
		showDir(dir,0);	
	}
	
	public static void showDir(File dir,int level)
	{
		System.out.println(getLevel(level)+dir);
		level++;
		File[] files=dir.listFiles();
		
		for(File f:files)
		{
			if(f.isDirectory())
			{
				showDir(f,level);
			}
			else
				System.out.println(getLevel(level)+f);
		}	
	}
	
	public static String getLevel(int level)
	{
		StringBuilder sb=new StringBuilder();
		sb.append("|--");
		for(int x=0;x<level;x++)
		{
//			sb.append("|--");
			sb.append("--");
//			sb.insert(0,"|  ");
		}
		return sb.toString();
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值