File类
本质并不是代表文件对象,代表的是指向文件的路径对象
1.绝对路径和相对路径区别
绝对路径: 以协议或者盘符开头
-
D:\WebRoot\txt\download1542332992180.txt 【本地绝对路径】
-
http://www.sxt.com:8080/day18/aaa.txt 【网络绝对路径】
相对路径: 相对于某个文件路径的路径
-
. : 当前文件夹
-
.. : 上一级文件夹
-
/:相对于根路径
2.File
2.1操作细节:
1.如果想要操作某个文件,必须先创建文件路径对象指向需要操作的文件
2.在书写文件路径的时候,必须先创建父目录路径对象,再创建子目录路径对象
2.2构造方法
说明 | |
---|---|
public File(String pathname) pathname | 文件路径名 |
public File(String parent,String child) | 父路径名 子路径名 |
public File(File parent,String child) | 通过父文件对象和子文件名称构造文件对象 |
2.3成员方法
- 创建文件功能
说明 | |
---|---|
public boolean createNewFile() | 若文件不存在则创建新文件 |
public boolean mkdir() | 创建目录 directory |
public boolean mkdirs() | 创建目录及不存在的父目录 |
-
删除文件功能
-
如果父目录相同,表示更名
-
如果父目录不同,表示剪切+更名
-
说明 | |
---|---|
public boolean delete() | 删除文件及空目录 |
- 文件的重命名
说明 | |
---|---|
public boolean renameTo(File dest) | 重命名为dest |
File f = new File("bbb.txt");
File dest = new File("xxx/yyy/zzz/ccc.txt");
System.out.println(f.renameTo(dest));
如果父目录相同,表示更名
如果父目录不同,表示剪切+更名
- 文件的相关属性功能
说明 | |
---|---|
public boolean isFile() | 是否文件 |
public boolean isDirectory() | 是否目录 |
public boolean canRead() | 是否可读 |
public boolean canWrite() | 是否可写 |
public boolean exists() | 是否存在 |
public boolean isHidden() | 是否隐藏 |
public long length() | 长度 |
public String getAbsolutePath() | 绝对路径 |
public String getPath() | 定义的路径 |
public String getName() | file名字 |
public long lastModified() | 最后一次修改时间 |
//public long lastModified()返回的是毫秒值
//所以需要用date转换为时间
Date d = new Date(f.lastModified());
//使用format把date转换为文本
String dateStr = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(d);
System.out.println(dateStr);
2.4文件的遍历
- 遍历所有文件
说明 | |
---|---|
public String[] list() | 返回file下的文件和目录名称(字符串) |
public File[] listFiles() | 返回file下的文件和目录(文件) |
- 遍历指定文件
说明 | |
---|---|
public String[] list(FilenameFilter filter) | 根据filter过滤返回file下文件和目录名称 |
public File[] listFiles(FileFilter filter) | 根据filter过滤返回file下文件和目录 |
public class FileDemo06 {
public static void main(String[] args) {
File f = new File("src/com/sxt/filedemo");
//public String[] list()返回file下的文件和目录名称(字符串)
String[] fileNames = f.list();
for (String fileName : fileNames) {
System.out.println(fileName);
}
//public File[] listFiles()返回file下的文件和目录(文件)
File[] files = f.listFiles();
for (File file : files) {
System.out.println(file.getName() + "|" + file.length());
}
//public String[] list(FilenameFilter filter)根据filter过滤返回file下文件和目录名称
String[] fileNames = f.list(new FilenameFilter() {
@Override
public boolean accept(File f, String name) {
// System.out.println(f + "|" + name);
File file = new File(f, name);
if (file.isFile() && file.getName().endsWith(".java")) {
return true;
}
return file.isFile() && file.getName().endsWith(".java");
}
});
System.out.println(Arrays.toString(fileNames));
//public File[] listFiles(FileFilter filter)根据filter过滤返回file下文件和目录
File[] files = f.listFiles(new FileFilter() {
@Override
public boolean accept(File f) {
return f.isFile() && f.getName().endsWith(".java");
}
});
System.out.println(Arrays.toString(files));
}
}