---------------------- android培训、java培训、期待与您交流! ----------------------
File类概述(HeiMa.day3.FileDemo.java)
用来将文件或者文件夹封装成对象。 方便对文件与文件夹进行操作。 File对象可以作为参数传递给流的构造函数。 了解File类中的常用方法。
lements Serializable, Comparable<File>
用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名 有两个组件:
一个可选的与系统有关的前缀 字符串,比如盘符,"/" 表示 UNIX 中的根目录,"\\\\" 表示 Microsoft Windows UNC 路径名。
零个或更多字符串名称 的序列。
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
//File类的各种创建方式
File fil1 = new File("d:\\test.txt");
File fil2 = new File("d:\\","test.txt");
File fil3 = new File("d:\\");
File fil4 = new File(fil3,"test.txt");
System.out.println("fil1:" + fil1);
System.out.println("fil2:" + fil2);
System.out.println("fil3:" + fil3);
System.out.println("fil4:" + fil4);
}
}
File对象功能-创建和删除
public boolean createNewFile();在指定位置创建文件如果文件已经存在,则不创建,返回false。和输出流不一样,输出流对象一建立创建文件,而且文件已经存在,会覆盖。
public boolean delete();删除失败返回假
public void deleteOnExit();在退出时删除
public boolean mkdir();
创建此抽象路径名指定的目录。
public boolean mkdirs();
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
File对象功能-判断
public boolean canExecute();测试应用程序是否可以执行此抽象路径名表示的文件。
public boolean exists();
测试此抽象路径名表示的文件或目录是否存在。
public boolean isDirectory();
测试此抽象路径名表示的文件是否是一个目录。
public boolean isFile();
测试此抽象路径名表示的文件是否是一个标准文件。
public boolean isHidden();
测试此抽象路径名指定的文件是否是一个隐藏文件。
public boolean isAbsolute();
测试此抽象路径名是否为绝对路径。(路径还没有被创建在也一样可以判断)
File对象功能-获取信息
public String getName();
返回由此抽象路径名表示的文件或目录的名称。
public String getPath();
将此抽象路径名转换为一个路径名字符串。
public String getParent();
返回此抽象路径名父目录的路径名字符串;如果此路径名没有明确指定父目录,则返回 null。 若果获取的是 相对路径,返回null。 如果相对路径中有上一层目录那么该目录就是返回结果。
public File getAbsoluteFile();
返回此抽象路径名的绝对路径名形式。
public String getAbsolutePath();
返回此抽象路径名的绝对路径名字符串。
public long lastModified();
返回此抽象路径名表示的文件最后一次被修改的时间。
public long length();
返回由此抽象路径名表示的文件的长度。
import java.io.File;
public class FIleDemo2 {
public static void main(String[] args) {
method_3();
}
public static void method_1(){
File fil1 = new File("d:\\test\\s\\s\\s");
fil1.deleteOnExit();
System.out.println("mkdir:" + fil1.mkdir());
System.out.println("delete:" + fil1.delete());
System.out.println("mkdirs:" + fil1.mkdirs());
}
public static void method_2(){
File fil = new File("d:\\test.txt");
System.out.println("canExecute:" + fil.canExecute());
System.out.println("exists:" + fil.exists());
System.out.println("isDirectory:" + fil.isDirectory());
System.out.println("isFile:" + fil.isFile());
System.out.println("isHidden:" + fil.isHidden());
System.out.println("isAbsolute:" + fil.isAbsolute());
}
public static void method_3(){
File fil = new File("Demo2.txt");
System.out.println("getPath:" + fil.getPath());
System.out.println("getParent:" + fil.getParent());
System.out.println("getAbsolutePath:" + fil.getAbsolutePath());
System.out.println("length:" + fil.length());
}
}
File对象功能-文件列表
列出目录下所有内容-递归
列出目录下所有内容-带层次 (HeiMa.day3.FileListTest.java)
String[] list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 String[] list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 File[] listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可,在列出过程中出现的还是目录的话,还可以再次调用本功能。也就是函数自身调用自身。这种表现形式,或者编程手法,称为递归。 递归要注意
限定条件
要注意递归的次数。尽量避免内存溢出。
import java.io.File;
import java.io.FilenameFilter;
public class FileListTest{
public static void main(String[] args) {
listFile("D:\\test",0);
}
//列出指定目录下指定文件
public static void list(){
File fil = new File("D:\\");
String[] strs = fil.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".mp3");
}
});
for(String str : strs){
System.out.println("name:" + str);
}
}
//显示出给定目录下所有文件及子目录中所有文件
public static void listFile(String str, int leve){
File fil =new File(str);
System.out.println(getLeava(leve++) + fil.getName());
File[] file = fil.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return true;
}
});
for(File fils : file){
if(fils.isDirectory()){
System.out.println(getLeava(leve) + fils.getName());
listFile(fils.getAbsolutePath(),leve+1);
}else{
System.out.println(getLeava(leve) + fils.getName());
}
}
}
public static String getLeava(int leve){
StringBuilder sb = new StringBuilder();
sb.append("|--");
for(int i = 0; i < leve;i++){
sb.insert(0, " ");
}
return sb.toString();
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------