黑马程序员——File类详解

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

File类

一,概述

1,文件系统中的文件和文件夹封装成了对象。提供了更多的属性和行为可以对这些文件和文件夹进行操作。这些是流对象办不到的,因为流只操作数据。

2,特点

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

   2)便于对文件与文件夹的属性信息进行操作

3)File类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变

4)File对象可以作为参数传递给流的构造函数

二,File类常见方法

1,创建

    boolean createNewFile():在指定目录下创建文件,如果该文件已存在,则不创建。而对操作文件的输出流而言,输出流对象已建立,就会创建文件,如果文件已存在,会覆盖。除非续写。

    boolean mkdir():创建此抽象路径名指定的目录。

    boolean mkdirs():创建多级目录。

2,删除

    boolean delete():删除此抽象路径名表示的文件或目录。

    void deleteOnExit():在虚拟机退出时删除。

注意:在删除文件夹时,必须保证这个文件夹中没有任何内容,才可以将该文件夹用delete删除。

    window的删除动作,是从里往外删。注意:java删除文件不走回收站。要慎用。

3,获取

    long length():获取文件大小。

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

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

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

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

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

File.pathSeparator:返回当前系统默认的路径分隔符,windows默认为 “;”。

File.Separator:返回当前系统默认的目录分隔符,windows默认为 “\”。

4,判断

    boolean exists():判断文件或者文件夹是否存在。

    boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。

    boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件。

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

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

5,重命名

      boolean renameTo(Filedest):可以实现移动的效果。剪切+重命名。

6,文件列表

    static File[] listRoots():获取有效盘符。

    String[] list():获取的是当前目录下文件或者文件夹的名称。

 

    File[] listFiles():获取的是当前目录下文件或者文件夹对应的对象。

注意:

    如果仅获取文件名称,就用list方法。如果还要获取文件的其他信息,最好使用listFiles。因为它可以获取到文件对象。

    这样就可以通过文件对象的方法,获取其他的内容。比如;文件大小,文件名称。修改时间等信息。

 

三,代码示例

1,

import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;

public class FileClassTest {

	public static void main(String[] args)throws IOException {
		// TODO Auto-generated method stub
		method_1();
		method_2();//创建文件。
		method_3();//创建文件夹。
		method_4();//删除文件或者文件夹。
		method_5();//判断
		method_6();//获取信息
		method_7();//重命名
		method_8();//获取文件列表
		method_9();
	}
	public static void method_9()
	{
		File dir = new File("c:\\");

		String[] names = dir.list();//获取当前目录下的文件夹和文件的名称包含隐藏文件。
								//如果File中封装的是一个文件,那么返回的数组为null。所以此处最好为了安全性做一个判断。
		System.out.println(names);
		for(String name : names)
		{
			System.out.println(name);
		}

		
	}
	
	//获取文件列表
	public static void method_8()
	{
		File[] roots = File.listRoots();//获取到系统中可以用的盘符。 

		for(File root : roots)
		{
			System.out.println(root);
		}
	}
	
	//重命名
	public static void method_7()
	{
		File f= new File ("qq.txt");

		File f1 = new File("c:\\ww.txt");

		f.renameTo(f1);//将f的文件名改成f1的文件名,可以进行文件的移动(剪切+重命名)。
	}

	public static void method_6()
	{
		File f = new File("a.txt");

		long time = f.lastModified();
		Date d = new Date(time);

		DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);

		String s = df.format(d);

		System.out.println("lastModified():"+s);


		System.out.println("exists:"+f.exists());
		System.out.println("length:"+f.length());//返回的是该文件的字节数。//该方法针对文件而言,文件夹没有大小。 
		System.out.println("getName:"+f.getName());
		System.out.println("getParent:"+f.getParent());
		System.out.println("getAbsolutePath:"+f.getAbsolutePath());//获取的封装内容的绝对路径,也就是完整路径。
		System.out.println("getPath:"+f.getPath());//获取file内封装的路径内容。
	
	}

	//判断
	public static void method_5()throws IOException
	{
		File f = new File("xx.txt");

		f.mkdir();
		//f.createNewFile();
		System.out.println("exists:"+f.exists());

		//不需要想当然的认为xx.txt一定是文件。


		//想要判断file是封装的是文件还是目录,必须要确定该内容是存在的。才可以判断。
		System.out.println("isFile:"+f.isFile());
		System.out.println("isDirector:"+f.isDirectory());
		System.out.println("isAbsolute:"+f.isAbsolute());
	}
	
	//删除文件或者文件夹。
	public static void method_4()
	{
		File f = new File("f.txt");

		boolean b1 = f.delete();//java中的删除不走回收站 。
		System.out.println("b1="+b1);
		
		File dir = new File("abc");
		File dir1 = new File("abc1");
		boolean b2 = dir.delete();
		boolean b3 = dir1.delete();//注意大家:删除目录时,如果目录中有内容,应该先将内部内容删除,在删该目录。
								//windows删除就是从里往外删。
		System.out.println("b2="+b2);
		System.out.println("b3="+b3);

	}

	//创建文件夹。
	public static void method_3()
	{
		File f = new File("abc\\mm\\nn\\xx\\aa\\qq\\ll\\pp");

//		boolean b = f.mkdir();//只能创建单个目录。如果已存在不创建。
		boolean b = f.mkdirs();//可以创建多级目录。可以在已存在目录继续创建目录。 


		System.out.println("b="+b);
	}

	//创建文件。
	public static void method_2()throws IOException
	{
		File f = new File("f.txt");

		boolean b = f.createNewFile();//如果f这个文件不存在,该方法会对其进行创建。
									//如果f已经存在,该方法不会创建。
									//而输出流创建文件,如果该文件存在,会覆盖。但是,如果输出流的构造函数传入参数为true。
									//不覆盖文件 ,可以完成续写
		System.out.println("b="+b);
	}

	public static void method_1()
	{
		File ff = new File("abc"+File.pathSeparator+"kkk");
		System.out.println(ff.toString());

		//将指定文件封装成File对象。
		File f = new File("c:"+File.separator+"2.bmp");
		//System.out.println(f);

		File f5 = new File("c:\\abc\\a.txt");
		File f1 = new File("c:\\","a.txt");

		File dir = new File("c:\\");
		File f2 = new File(dir,"a.txt");

		//File f3 = new File("c:"+File.separator+"abc"+File.separator+"kkk"+File.separator+"aa"+File.separator+"a.txt");
	}
}


2,

import java.io.*;

//文件列表(过滤)
class  FileListFilter
{
	public static void main(String[] args) 
	{
		File dir = new File("c:\\");

		String[] names = dir.list(new FilterMp3());
		
		System.out.println(names.length);
		for(String name : names)
		{
			System.out.println(name);
		}
		/**/
	}
}

/*
获取扩展名为mp3的文件。
注意特殊情况,如果出现xx.mp3文件夹时,需要被过滤掉。 
*/
class FilterMp3 implements FilenameFilter
{
	public boolean accept(File dir,String name)
	{
		//System.out.println(dir+"....."+name);

		return new File(dir,name).isFile() && name.endsWith(".mp3");
	}
}


------- android培训java培训、期待与您交流! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值