/*
* file类的常见方法
* 1:创建:
* boolean createNewFile();
* 在指定位置创建文件,如果该文件已经存在则不创建,返回false。
* 和输出流不一样,输出流对象一建立创建文件,而且文件已经存在,会覆盖。
* boolean mkdir();//创建文件夹
* boolean mkdirs();//创建多级文件夹
* 2:删除:
* boolean delete();//删除失败返回假false
* boolean deleteOnExit();//在程序退出时删除文件
*
* 3:判断:
* exists();//测试此抽象路径名表示的文件或目录是否存在。
* isDirectory()://判断是否是文件目录
* isFile()://判断是否为问价
*isHidden()://判断是否为隐藏
*4:获取信息:
*getName();//获取文件名字
*getParent();//获取父目录
*getPath();//获取文件路径
*getAbsolutePath();//获取文件绝对路径
*length();//文件大小long类型
*lastModified()//返回路径最后修改的时间long类型
*
*/
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) {
consMethod();
try {
method1();
} catch (IOException e) {
e.printStackTrace();
}
method2();
listDemo();
method4();
method5();
}
//显示输出方法
public static void listDemo() {
/*File [] files=File.listRoots();//显示机器的所有盘符
for (File f : files) {
System.out.println(f);
}*/
/*//显示d盘内的所有一级目录和文件包含隐藏文件
File fi=new File("d:\\");
//调用list方法的file对象必须是封装了一个目录。该目录还必须存在
String[] names=fi.list();
for (String name : names) {
System.out.println(name);
}*/
//显示一个指定文件里面的所有文件
File fi0=new File("d:\\");
//获取指定目录的所有文件和文件大小包括文件夹
File []files=fi0.listFiles();
for (File file : files) {
System.out.println(fi0.getName()+"><"+fi0.length());
}
String[]arr=fi0.list(new FilenameFilter() {
@Override
public boolean accept(File arr, String name) {
System.out.println("fi0:"+fi0+"...name"+name);
return name.endsWith("*.txt");
}
});
System.out.println("len:"+arr.length);
for (String name : arr) {
System.out.println(name);
}
}
//修改名字
public static void method5() {
File f1=new File("d:\\a.txt");
File f2=new File("d:\\aaaa.txt");
System.out.println(f1.renameTo(f2));
//把f1的名字改为f2的名字,如果不在同一个文件夹中,类似为剪切功能
}
public static void method4() {
File f=new File("d:\\a.txt");
//获取父路径该方法返回的是绝对路径中的父目录,如果获取的是相对路径返回null
System.out.println("path"+f.getParent());
System.out.println("path"+f.getPath());//获取路径
System.out.println("path"+f.getAbsolutePath());//获取绝对路径
}
//判断方法
public static void method2() {
File fi1=new File("d:\\a.txt");
// 测试应用程序是否可以执行此抽象路径名表示的文件。
//System.out.println("execute:"+fi1.canExecute());
//测试此抽象路径名表示的文件或目录是否存在。
//System.out.println("exists:"+fi1.exists());
//
File dir=new File("d:\\abc");
System.out.println("mkdir:"+dir.mkdir());
//判断是否为目录
//在判断文件对象是否为文件或者目录时,必须要先判断该文件对象封装的内容是否存在
//通过exists判断
System.out.println("dir:"+fi1.isDirectory());
System.out.println("dir:"+fi1.isFile());
}
public static void method1()throws IOException {
File fi1=new File("d:\\a.txt");
// fi1.deleteOnExit();//一般临时文件会这样做,用来退出虚拟机时删除文件
// System.out.println("create:"+fi1.createNewFile());
//删除文件
System.out.println("delete:"+fi1.delete());
}
//创建文件对象
public static void consMethod() {
//将a.txt封装成file对象,可以将已有的和为出现的文件或者文件夹分装成对象
File f1=new File("d:\\a.txt");
File f2=new File("d:\\a.txt","d:\\b.txt");
File d=new File("d:\\123");
File f3=new File(d,"d:\\c.txt");
//只打印你封装的,封装的为相对的就打印相对的,封装为绝对的打印就是绝对的
//实现跨平台的作用;
File f4=new File("d:"+File.separator+"aa"+File.separator+"bb"+File.separator+"cc.txt");
System.out.println("f1:"+f1);
System.out.println("f2:"+f2);
System.out.println("f3:"+f3);
}
}