File类:是文件和目录路径名的抽象表示形式
1.构造方法:
File(String pathname):根据一个路径得到File对象
File(String parent,String child):根据一个目录和一个子文件/目录得到File对象
File(File parent,String child):根据一个父File对象和一个子文件/目录得到File对象
2.File类的创建功能
public boolean createNewFile():创建文件,如果存在这样的文件,就不创建了
public boolean mkdir():创建文件夹,如果存在这样的文件夹,就不创建了
public boolean mkdirs():创建文件夹,如果父文件不存在,会帮着创建出来
3.File类的重命名和删除功能
public boolean renameTo(File dest):把文件重命名为指定的文件路径
public boolean delete():删除文件或者文件夹
4.File类的判断功能
public boolean isDirectory():判断是否是目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏
5.File类的获取功能
public String getAbsolutePath():获取绝对路径
public String getPath():获取路径
public String getName():获取名称
public long length():获取长度,字节数
public long lastModified():获取最后一次的修改时间,毫秒值
public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
6.输出指定目录下指定后缀的文件名
7.文件名称过滤器的使用
public String[] list(FilenameFilter filter)
public File[] listFiles(FileFilter filter)
package pra_15;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class J_29 {
public static void main(String[] args) throws IOException{
//构造方法1
File file=new File("D:\\File\\a.txt");
System.out.println(file.exists()); //true
File file2=new File("b.txt");
System.out.println(file2.exists()); //true
//构造方法2
String parent="D:\\File";
String child="a.txt";
File file3=new File(parent,child);
System.out.println(file3.exists()); //true
//构造方法3
File parent2=new File("D:\\File");
String child2="a.txt";
File file4=new File(parent2,child2);
System.out.println(file4.exists()); //true
//2.File类的创建功能
File file5=new File("c.txt");
System.out.println(file5.createNewFile());
File dir1=new File("q");
System.out.println(dir1.mkdir());
File dir2=new File("ww//qq");
System.out.println(dir2.mkdirs()); //创建多级目录
//3.File类的重命名和删除功能
File file6=new File("k.txt");
File file7=new File("m.txt");
System.out.println(file7.createNewFile());
File file8=new File("D:\\n.txt");
System.out.println(file5.renameTo(file6));
System.out.println(file7.renameTo(file8));
System.out.println(file8.delete()); //在这里删除file7 没法删除成功,需要删除的是对象file8
System.out.println(dir1.delete()); //要删除文件夹,文件夹里必须是空的
//4.File类的判断功能
System.out.println(dir2.isDirectory()); //true
System.out.println(file6.isFile()); //true
System.out.println(file6.exists()); //true
System.out.println(file6.canRead()); //true
file6.setReadable(false); //设置file6文件为不可读(指的是用IO流对象去读)
System.out.println(file6.canRead()); //true,因为windows系统文件认为所有的文件都是可读的
System.out.println(file6.canWrite()); //true
file6.setWritable(false); //设置file6文件为不可写(指的是用IO流对象去读)
System.out.println(file6.canWrite()); //false,windows系统可以设置为不可写
System.out.println(file6.isHidden()); //false,判断是否是隐藏文件
//5.File类的获取功能
System.out.println(file6.getAbsolutePath());
System.out.println(file6.getPath()); //获取构造方法中传入的路径
System.out.println(file6.getName()); //无论相对路径还是绝对路径,获得的都是文件的名字
System.out.println(file6.length());
Date d=new Date(file6.lastModified());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println(sdf.format(d));
File dir3=new File("E:\\hoj");
String[] arr=dir3.list();
for (String string : arr) {
System.out.println(string);
}
File[] arr2=dir3.listFiles();
for (File file9 : arr2) { //获取文件对象
System.out.println(file9); //重写的是toString()方法,所以是全路径
}
//6.输出指定目录下指定后缀的文件名
//只能拿到这一级目录的.c文件
String[] arr3=dir3.list(); //获取 E:\\hoj下的所有文件或者文件夹
for (String string : arr3) {
if(string.endsWith(".c")){
System.out.println(string);
}
}
//下一层的也拿到(这里的代码没写完,后面补充!)
File[] sub=dir3.listFiles();
for (File file9 : sub) {
if(file9.isFile()&&file9.getName().endsWith(".c")){
System.out.println(file9);
}
}
//7.文件名称过滤器的使用
String[] arr4=dir3.list(new FilenameFilter(){
@Override
public boolean accept(File dir, String name) {
File file=new File(dir,name);
return file.isFile()&&file.getName().endsWith(".c");
}
});
for (String string : arr4) {
System.out.println(string);
}
}
}