01.java IO之File
1.File的类图

2.举个栗子
import java.io.*;
import java.sql.SQLOutput;
/**
* File 是文件和目录路径名的抽象表示形式。
*/
public class FileDemo {
public static void main(String[] args) {
File file = new File("d:/a.txt");
test1(file);
File file1 = new File("d:/");
test2(file1);
File file3 = new File("d:/");//过滤文件
test3(file3);
}
private static void test3(File file3) {
String[] list = file3.list(filenameFilter());
for (String s : list) {
System.out.println(s); //返回的是D盘下的所有文件和目录 但是不添加盘符
}
File[] files1 = file3.listFiles(filenameFilter());
for (File file1 : files1) {
System.out.println(file1); //返回的D盘下的绝对路径
}
File[] files2 = file3.listFiles(fileFilter());
for (File file1 : files2) {
System.out.println(file1); //返回的D盘下的绝对路径
}
}
public static FilenameFilter filenameFilter(){
return new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
};
}
public static FileFilter fileFilter(){
return new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".java");
}
};
}
private static void test2(File file) {
File[] files = file.listRoots();
for (File file1 : files) {
System.out.println(file1); //返回的是 C:\ D:\ E:\
}
String[] list = file.list();
for (String s : list) {
System.out.println(s); //返回的是D盘下的所有文件和目录 但是不添加盘符
}
File[] files1 = file.listFiles();
for (File file1 : files1) {
System.out.println(file1); //返回的D盘下的绝对路径
}
}
private static void test1(File file ) {
try {
boolean newFile = file.createNewFile(); //创建一个空文件 如果文件存在则返回false
System.out.println(newFile);
System.out.println(file.canExecute());//文件是否可执行
System.out.println(file.canRead());//文件是否可读取
System.out.println(file.canWrite());//文件是否可写
System.out.println(file.getCanonicalFile());//回去文件 的抽象路径
System.out.println(file.getCanonicalPath());//获取文件的抽象路径
System.out.println(file.compareTo(new File("d:/b.txt")));// 返回-1 如果该参数等于此抽象路径名,则返回零;如果此抽象路径名在字母顺序上小于该参数,则返回小于零的值;如果此抽象路径名在字母顺序上大于该参数,则返回大于零的值
File tempFile = File.createTempFile("aqqq1", "txt",new File("d:/"));//创建临时文件
System.out.println(tempFile);
boolean delete = tempFile.delete();// 删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。
System.out.println(delete);
// deleteOnExit() 这个方法的栗子:如果正在传文件的时候jvm断开了 那么创建的文件就会删除掉 类似于数据库的事务原子的特性
System.out.println(file.equals(file));//判断给定的File的对象的抽象路径是否一样 使用的其实是CompareTo方法
System.out.println(file.exists());//存在返回true 不存在的时候返回false
System.out.println(file.getAbsoluteFile());//返回绝对路径
System.out.println(file.getAbsolutePath());//返回绝对路径字符串
System.out.println(file.getFreeSpace());//返回磁盘的空余空间
System.out.println(file.getTotalSpace());//返回磁盘总空间
System.out.println(file.getUsableSpace());//返回磁盘可用空间
// System.out.println(file.isAbsolute()); //是否为绝对路径名
// System.out.println(file.isDirectory());//是否为目录
// System.out.println(file.isFile());//是否为文件
// System.out.println(file.isHidden());//文件是否隐藏
// System.out.println(file.lastModified());//文件的最近更新时间
// System.out.println(file.length());//文件的大小
// System.out.println(file.list().toString());//目录中的文件和目录
// System.out.println(file.listRoots());//可用的文件系统根
// file.mkdir(); //创建目录 只能有一级 比如 d:/aaa
// file.mkdirs(); //创建多级目录 比如 d:/aaa/bbb
} catch (IOException e) {
e.printStackTrace();
}
}
}
浙公网安备 33010602011771号