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培训、期待与您交流! ----------