您的位置:首页 > 职场人生

黑马程序员——File类详解

2015-07-16 17:41 519 查看
------- 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培训、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: