-------
android培训、
java培训、期待与您交流! ----------
File类:用来将文件或者文件夹封装成对象。
方便对文件与文件夹的属性信息进行操作。
File的出现弥补了文件的不足,增强了文件的操作性。
File的构造
//创建file对象
File f = new File("a.txt");//将a.txt封装成一个对象。
//可以将已有的或者未出现的文件或者文件夹封装成对象
File f1 = new File("c:\\abc","b.txt");
//左边是父目录,也就是将b.txt放到c:\\abc中的文件或者文件夹封装
//成对象。
File d = new File("c:\\abc");
File f3 = new File(d,"c.txt");
//这种结构与上边创建的相同
System.out.println(f);
//打印出这个文件的路径名。
File f4 = new File("c:"+File.separator);
//上述的File.separator是对应特定操作系统的
//目录分隔符。
//1.创建。
File f = new File("g://3.txt");
boolean bool = f.createNewFile();
//在指定的位置创建文件,如果该文件已经存在,则不创建。
//返回false
System.out.println(bool);
//创建文件夹。
File dir = new File("abc");
dir.mkdir();//只能创建单级目录
dir.mkdirs();//可以创建多级目录。
//2.删除。
System.out.println(f.delete());
//删除这个文件。
File f3 = new File("g://33.txt");
f3.deleteOnExit();
//告诉虚拟机,在虚拟机退出的时候删掉。
//一般用于临时文件。
f3.createNewFile();
//3.判断。
File f10 = new File("234.txt");
System.out.println(f10.canExecute());
//判断这个文件是否可执行。
System.out.println(f10.exists());
//判断这个文件是否存在。十分的重要。
System.out.println(f10.isDirectory());
//判断是 不是文件夹
System.out.println(f10.isFile());
//判断是不是文件
//对一个文件或者文件夹判断的时候,必须要
//先判断该文件是否存在,如果不存在,则两者都是false
System.out.println(f10.isHidden());
//是不是隐藏文件。用java流访问不了。
System.out.println(f10.isAbsolute());
//是不是以绝对路径创建的文件。
//4.获取信息。
File file1 = new File("234.txt");
file1.createNewFile();
System.out.println(file1.getName());
//得到文件的名称
System.out.println(file1.getPath());
//得到文件的相对路径
System.out.println(file1.getParent());
//使用相对路径的时候,返回的是null
//绝对路径的话,返回的是其父目录
//如果相对路径中有上一层目录,那么该目录就是返回结果。
System.out.println(file1.getAbsolutePath());
//得到文件的绝对路径
System.out.println(file1.lastModified());
//获取这个文件最后一次被修改的文件。
System.out.println(file1.length());
//获取这个文件的大小。
File file2 = new File("345.txt");
System.out.println(file1.renameTo(file2));
//将file1的文件名该文file2的文件名。
File[] file= File.listRoots();
//返回系统的根路径
System.out.println(Arrays.toString(file));
//[C:\, D:\, G:\, Q:\, Z:\]
File f = new File("c://");
System.out.println(Arrays.toString(f.list()));
//列出这个目录下文件和文件夹的名称。包含隐藏文件。
//当f是一个文件时候,返回一个null,仅仅对文件夹有效
//而且该文件夹必须存在。
//过滤某个文件夹下一层中的文件
String[] arr = f.list(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
//这里根据返回的true和false去判断是否去过滤这个文件
//过滤以.txt结尾的文件
//这里的dir就是上边创建时候指定的目录,而name就是文件的名称
if(name.endsWith(".txt"))
{
return true;
}
else
{
return false;
}
}
});
File f = new File("g:\\");
File[] fileArr = f.listFiles();
//返回当前文件一层下的所有文件及文件夹,并返回他们各自的对象
for(File ff:fileArr)
{
System.out.println(ff.getName()+" "+ff.length());
//得到这个文件夹下的各个文件的名称和文件大小。
}
//递归的列出指定文件夹下的所有文件
public static void main(String[] args) throws Exception
{
File f = new File("g://acm");
get(f);
}
public static void get(File f)
{
if(f.isFile())
{
System.out.println(f.getName());
}
else
{
System.out.println(f);
File[] ff = f.listFiles();
for(int i = 0;i<ff.length;i++)
{
get(ff[i]);
}
}
}
//删除一个带内容的目录
public static void main(String[] args) throws Exception
{
File file = new File("g://acm");
get(file);
}
public static void get(File f)
{
if(f.isDirectory())
{
File[] file1 = f.listFiles();
for(int i = 0;i<file1.length;i++)
{
get(file1[i]);
}
System.out.println(f.delete());
}
else
{
System.out.println(f.delete());
}
}
练习
将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。
import java.io.*;
import java.util.*;
public class Test2
{
private PrintWriter pw;
public static void main(String[] args) throws Exception
{
PrintWriter pw = new PrintWriter("3.txt");
File file = new File("G:\\Users\\User\\Workspaces");
get(file,pw);
pw.close();
}
public static void get(File file,PrintWriter pw)
{
if(file.isDirectory())
{
File[] files = file.listFiles();
for(int i=0;i<files.length;i++)
{
get(files[i],pw);
}
}
else
{
if(file.getName().endsWith(".java"))
{
pw.println(file.getName());
}
}
}
}