目录
一、创建File对象
1、File类创建对象
方法名称 | 说明 |
public File(String pathname) | 根据文件路径创建文件对象 |
public File(String parent, String child) | 根据父路径名字符串和子路径名字符串创建文件对象 |
public File(File parent, String child) | 根据父路径对应文件对象和子路径名字符串创建文件对象 |
2、注意
File对象可以定位文件和文件夹。
File封装的对象仅仅是一个路径名,这个路径可以是存在的,也可以是不存在的。
3、绝对路径和相对路径
绝对路径:从盘符开始。
相对路径:不带盘符,默认直接到当前工程下的目录寻找文件。
4、代码演示
public static void main(String[] args) {
//1、创建File对象 (指定了文件的路径)
//路径写法:C:\Users\ls\Desktop\resources\初音未来.jpg
// C:/Users/ls/Desktop/resources/初音未来.jpg
// File.separator
//File f = new File("C:\\Users\\ls\\Desktop\\resources\\初音未来.jpg");
//File f = new File("C:/Users/ls/Desktop/resources/初音未来.jpg");
File f = new File("C:"+File.separator+"Users"+File.separator+"ls"+File.separator+"Desktop"+File.separator+"resources"+File.separator+"初音未来.jpg");
long size = f.length(); //是文字的字节大小
System.out.println(size);
//2、File创建对象,支持绝对路径 支持相对路径(重点)
File f2 = new File("C:\\Users\\ls\\Desktop\\resources\\河面落日.jpg"); //绝对路径
System.out.println(f2.length());
//相对路径:一般定位到模块中去的文件。相对到工程下!!
File f3 = new File("file-io-app/src/data.txt");
System.out.println(f3.length());
//3、File创建对象,可以是文件也可以是文件夹
File f4 =new File("C:\\Users\\ls\\Desktop\\resources");
System.out.println(f4.exists()); //判断这个路径下是否存在?
}
二、常用方法:判断文件类型、获取文件信息
1、File类的判断文件类型、获取文件信息功能
方法名称 | 说明 |
public boolean isDirectory() | 判断此路径名表示的File是否为文件夹 |
public boolean isFile() | 判断此路径名表示的File是否为文件 |
public boolean exists() | 判断此路径名表示的File是否存在 |
public long length() | 返回文件的大小(字节数量) |
public String getAbsolutePath() | 返回文件的绝对路径 |
public String getPath() | 返回定义文件时使用的路径 |
public String getName() | 返回文件的名称,带后缀 |
public long lastModified() | 返回文件的最后修改时间(时间毫秒值) |
2、代码展示
/**
目标:File类的获取功能
- pubilc String getAbsolutePath():返回此File的绝对路径的字符串。
- pubilc String getPath():获取创建文件对象的时候用的路径
- pubilc String getName():返回此File表示的文件或目录得名称
- pubilc String length():返回此File表示的文件长度
*/
public class FileDemo2 {
public static void main(String[] args){
//1、绝对路径创建一个文件对象
File f1 = new File("C:\\Users\\ls\\Desktop\\resources\\河面落日.jpg");
//a.获取它的绝对路径
System.out.println(f1.getAbsolutePath());
//b.获取文件定义的时候使用的路径。
System.out.println(f1.getPath());
//c.获取文件名称带后缀。
System.out.println(f1.getName());
//d.获取文件的大小:字节个数。
System.out.println(f1.length());
//e.获取文件的最后修改时间
long time = f1.lastModified();
System.out.println("最后修改时间为:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time));
//f.判断文件是文件还是文件夹
System.out.println(f1.isFile()); //ture
System.out.println(f1.isDirectory()); //false
System.out.println("-----------------------------");
File f2 = new File("file-io-app\\src\\data.txt");
//a.获取它的绝对路径
System.out.println(f2.getAbsolutePath());
//b.获取文件定义的时候使用的路径。
System.out.println(f2.getPath());
//c.获取文件名称带后缀。
System.out.println(f2.getName());
//d.获取文件的大小:字节个数。
System.out.println(f2.length());
//e.获取文件的最后修改时间
long time2 = f2.lastModified();
System.out.println("最后修改时间为:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time));
//f.判断文件是文件还是文件夹
System.out.println(f2.isFile()); //ture
System.out.println(f2.isDirectory()); //false
System.out.println(f2.exists()); //true
System.out.println("----------------");
File file = new File("D:\\");
System.out.println(file.isFile()); //false
System.out.println(file.isDirectory()); //true
System.out.println(file.exists());//true
System.out.println("------------------");
File file2 = new File("D:/b");
System.out.println(file2.isFile()); //false
System.out.println(file2.isDirectory()); //false
System.out.println(file2.exists());//false
}
}
三、常用方法:创建文件、删除文件功能
1、File类创建文件的功能
方法名称 | 说明 |
public boolean createNewFile() | 创建一个新的空的文件 |
public boolean mkdir() | 只能创建一级文件夹 |
public boolean mkdirs() | 可以创建多级文件夹 |
2、File类删除文件的功能
方法名称 | 说明 |
public boolean delete() | 删除由此抽象路径名表示的文件或空文件夹 |
3、注意
delete方法默认只能删除文件和空文件夹,delete方法直接删除不走回收站。
4、代码展示
/**
目标: File类的创建和删除方法
-public boolean createNewFile(): 当前仅当具有该名称的文件上不存在时,
创建一个新的空文件。(几乎不用的,因为以后文件都是自动创建的!)
-public boolean delete(): 删除由此File表示的文件或目录。(只能删除空目录)
-public boolean mkdir(): 创建由此File表示的目录。(只能创建一级目录)
-public boolean mkdirs(): 可以创建多级目录(建议使用的)
*/
public class FileDemo3 {
public static void main(String[] args) throws IOException {
File f = new File("file-io-app\\src\\data.txt");
//a.创建新文件,创建成功返回true,反之,不需要这个,以后文件写出去的时候会自动创建
System.out.println(f.createNewFile());
File f1 = new File("file-io-app\\src\\data2.txt");
System.out.println(f1.createNewFile()); //(几乎不用的,因为以后文``件都是自动创建的!)
//b.mkdir创建一级目录
File f2 = new File("C:\\Users\\ls\\Desktop\\resources\\aaa");
System.out.println(f2.mkdir());
//c.mkdirs创建多级目录(重点)
File f3 = new File("C:\\Users\\ls\\Desktop\\resources\\bbb\\ccc\\ddd\\eee");
//System.out.println(f3.mkdir());
System.out.println(f3.mkdirs()); //支持多级创建
//d.删除文件或者空文件夹
System.out.println(f1.delete());
File f4 = new File("C:\\Users\\ls\\Desktop\\resources\\河面落日.jpg");
System.out.println(f4.delete()); //占用一样可以删除
//只能删除空文件夹,不能删除非空文件夹
File f5 = new File("C:\\Users\\ls\\Desktop\\resources\\aaa");
System.out.println(f5.delete());
}
}
四、常用方法:遍历文件夹
1、File类的遍历功能
方法名称 | 说明 |
public String[] list() | 获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。 |
public File[] listFiles()(常用) | 获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点) |
2、listFiles方法注意事项
当文件不存在时或者代表文件时,返回null
当文件对象代表一个空文件夹时,返回一个长度为0的数组
当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
当文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
当没有权限访问该文件夹时,返回null
3、代码展示
/**
目标: File针对目录的遍历
-public String[] list():
获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。
-public File[] listFiles()(常用):
获取当前目录下所有"一级文件对象"。到一个文件对象数组中去返回(重点)
*/
public class FileDemo4 {
public static void main(String[] args) throws IOException {
//1、定位一个目录
File f1 = new File("C:\\Users\\ls\\Desktop\\resources");
String[] names = f1.list();
for (String name : names) {
System.out.println(name);
}
//2、一级文件对象
//获取当前目录下所有的"一级文件对象"到一个文件对象的数组中返回(重点)
File[] file = f1.listFiles();
for (File file1 : file) {
System.out.println(file1.getAbsolutePath());
}
//注意事项!!
}
}