文件File
file类:文件和目录路径名的表现形式——通过file对象实现对文件或文件夹的操作
1.构造方法(3种)
- File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新
File
实例。 - File(String parent, String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新
File
实例。 - File(File parent, String child);根据 parent 抽象路径名和 child 路径名字符串创建一个新
File
实例。
File file=new File("aaa.txt");
System.out.println(file);//aaa.txt
File file2=new File("D:\\JAVA培训\\JAVA_SE进阶\\aaa.jpg");
String parent="D:\\JAVA培训\\JAVA_SE进阶";String son="aaa.jpg";
File file3=new File(parent, son);
File file4=new File(parent);
File file5=new File(file4, son);
2.常用方法
创建功能:
- boolean createNewFile():检查文件是否存在,若不存在则创建该文件
- boolean mkdir(): 创建此抽象路径名指定的目录。
- public boolean mkdirs():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
重命名和删除功能:
- public boolean renameTo(File dest):重命名,同级目录下就是改名;不在同一级目录下就是改名加剪切
- public boolean delete():删除,删除不可逆,不走回收站(只能删除空文件)
public static void main(String[] args) throws IOException {
File file1=new File("aaa.txt");
System.out.println(file1.createNewFile());//true:创建文件,没有才创建
System.out.println(file1.delete());//true:删除文件aaa
File file2=new File("bbb");
System.out.println(file2.renameTo(new File("aaa")));//true:将文件夹bbb重命名为aaa
System.out.println(file2.mkdir());//true:创建文件夹
File file3=new File("ccc\\aaa");
System.out.println(file3.mkdirs());//true:创建多级文件夹
}
判断功能:
- isDirectory(): 是否为文件夹;isFile():是否为文件
- exists():是否存在;isHidden();是否是隐藏文件
- canRead();canWrite();是否可读\写(window认为所有文件都是可读,但是可以设置设置是否可写)
获取功能:
- String getAbsolutePath(); String getPath():获取绝对路径、相对路径
- String getName();long length():
- long lastModified();返回此抽象路径名表示的文件最后一次被修改的时间。
- String[] list(); File[] listFiles():
private static void demo02() {//获取功能
File file1=new File("aaa.txt");
System.out.println("绝对路径"+file1.getAbsolutePath());//绝对路径:D:\JAVA培训\JAVA_SE进阶\IO流\aaa.txt
System.out.println("相对路径"+file1.getPath());//相对路径aaa.txt
System.out.println("getName:"+file1.getName());//getName:aaa.txt
System.out.println("文件字节数:"+file1.length());//文件字节数:0
//获得最后修改时间
long l=file1.lastModified();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("文件最后修改时间为:"+sdf.format(l));//文件最后修改时间为:2019-11-23 10:01:40
}
private static void demo1() throws IOException {//判断功能
File file1=new File("aaa.txt");
file1.createNewFile();
System.out.println(file1.exists());//判断其是否存在:ture
System.out.println(file1.isFile());//是否为文件:true
System.out.println(file1.isDirectory());//是否为文件夹:false
boolean b = file1.setReadable(false);boolean b1 = file1.canRead();
System.out.println(b+":"+b1);//false:true
boolean b3 = file1.setWritable(false);boolean b4 = file1.canWrite();
System.out.println(b3+":"+b4);//true:false
}
private static void demo03() {
File file1=new File("aaa");
String [] list=file1.list();//list()获取文件夹下面所有的文件或者文件夹。返回文件或者文件夹的字符串数组
for (String f : list) {
if(f.endsWith(".jpg"))System.out.println(f);//aaa.jpg
}
File[] files = file1.listFiles();//listFiles() 返回文件夹下面所有的文件或者文件对象数组
for (File f : files) {
if (f.isFile()&&f.getName().endsWith(".jpg"))System.out.println(f);//aaa\aaa.jpg
}
}
文件过滤器
来获取一个目录下满足条件的部分子选项(即只获取文件或只获取目录);文件过滤器更多是被用于listFiles(FileFilter filter)的参数中。
FileFilter接口:boolean accept(File pathname)
FilenameFilter接口:boolean accept(File dir, String name)
public static void main(String[] args) {
File file=new File("aaa");
String[] list = file.list(new FilenameFilter() {//通过文件名称过滤器对文件名称进行过滤
@Override
public boolean accept(File dir, String name) {
File file2=new File(dir,name);
return file2.isFile()&&file2.getName().endsWith(".jpg");
}
});
for (String f : list) {
System.out.println(f);//aaa.jpg
}
File[] listFiles = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile()&&pathname.getName().endsWith(".jpg");
}
});
for (File f2 : listFiles) {
System.out.println(f2);//aaa\aaa.jpg
}
}