小梁同学 の
Java学习旅途
你好! 这是小梁同学使用 博客 所记录的文章笔记,作为一个初学者的从基础到未来的记录,如果你想和我一起在Java学习路程上坚持下去,欢迎你的关注与指正。
新的将来
万丈高楼平地起,未来只能靠自己
从无到有,从零到一,学习路上没有尽头
每日一文,每日一记,跟着软件向前努力
加油!!!!!
详解代码均在以下标题后的链接中
以下所有有关代码,都是个人在上完课后自己重新敲代码之后所做笔记后上传,并非原搬直接上传,谢谢理解
二.File类
1.基本概念
java.io.File类用于描述文件或目录的路径信息,可以获取文件的大小等属性。
2.构造方法
方法名 | 说明 |
---|---|
File(String pathName) | 通过将给定的路径名字符串转换成File对象 |
File(String parent,String child) | 从父类的路径名和子类的文件名来创建一个File对象 |
File(File parent,String child) | 从父类的File对象和子类的文件名来创建一个File对象 |
public class Test01 {
public static void main(String[] args) {
//file01对象理解成文件的描述符,操作文件用
File file01 = new File("./myTest.txt");
//第一个参数是路径(父类),第二个参数是目标文件的名称(子类)
File file02 = new File("./", "myTest.txt");
//file04中第一个参数使用的是File类型的对象(父类)
// 第二个参数是目标文件的名称(子类)
File file03 = new File("./");
File file04 = new File(file03, "myTest.txt");
System.out.println(file04);
/*
注:路径的分类
相对路径:
当前路径表示为:./
上一级目录表示为:../
上两级目录表示为:../../
*/
}
}
3.创建功能
方法名 | 说明 |
---|---|
boolean createNewFile() | 判断是否 创建文件 |
boolean mkdir() | 判断是否 创建单个目录 |
boolean mkdirs() | 判断是否 创建多级目录 |
public class Test02 {
public static void main(String[] args) throws IOException {
//创建文件对象,或者描述符
File file = new File("./myTest.txt");
//创建文件
if (file.createNewFile()){
System.out.println("文件创建成功!");
}else {
System.out.println("文件创建失败!");
}
//创建目录
File file02 = new File("./myDir");//创建目录的对象
if (file02.mkdir()){
System.out.println("目录创建成功!");
}else{
System.out.println("目录创建失败!");
}
//创建多级目录
File file03 = new File("H/D/A/L/O");//创建多级目录的对象
if (file03.mkdirs()){
System.out.println("多级目录创建成功!");
}else{
System.out.println("多级目录创建失败!");
}
}
}
===========================
文件创建成功!
目录创建成功!
多级目录创建成功!
注意:当文件或目录已经存在的情况下,再次创建会返回false
4.常用功能
方法名 | 说明 |
---|---|
boolean isDirectory() | 判断一个File对象是否是一个目录 |
boolean isFile() | 判断一个File对象是否是一个文件 |
boolean exists() | 判断一个文件或者目录是否存在 |
String getAbsolutePath() | 获取File对象指向的文件的绝对路径 |
String getPath() | 获取File对象指向的路劲与文件名 |
String[] list() | 获取File对象中的所有文件(字符串形式) |
File[] listFiles() | 获取File对象中的所有文件(File对象形式) |
long lastModify() | 获取File对象中文件最后被修改的时间 |
File file01 = new File("./");
File file02 = new File("./b.txt");
File file03 = new File("./myTest.txt");
File file04 = new File("./myDir");
//判断File对象是否是目录
System.out.println(file01.isDirectory());
System.out.println(file02.isDirectory());
System.out.println(file03.isDirectory());
System.out.println(file04.isDirectory());
==============
true
false
false
true
//判断File对象是否是文件(当文件不存在时,返回false)
System.out.println(file01.isFile());
System.out.println(file02.isFile());
System.out.println(file03.isFile());
System.out.println(file04.isFile());
==============
false
false
true
false
//判断文件或者目录是否存在
System.out.println(file01.exists());
System.out.println(file02.exists());
System.out.println(file03.exists());
System.out.println(file04.exists());
==============
true
false
true
true
//获取绝对路径
System.out.println(file01.getAbsolutePath());
System.out.println(file02.getAbsolutePath());
System.out.println(file03.getAbsolutePath());
System.out.println(file04.getAbsolutePath());
===============
E:\Java培训课程\.
E:\Java培训课程\.\b.txt
E:\Java培训课程\.\myTest.txt
E:\Java培训课程\.\myDir
//获取File对象指向的文件路劲和文件名
System.out.println(file01.getPath());
System.out.println(file02.getPath());
System.out.println(file03.getPath());
System.out.println(file04.getPath());
==============
.
.\b.txt
.\myTest.txt
.\myDir
File file = new File("./");
//获取File对象中的所有文件(字符串形式)
//找的是当前路径下的位置
String[] list = file.list();
for (String name : list) {
System.out.println(name);
}
==============
.idea
a.txt
H
myDir
myTest.txt
out
src
typora-setup-x64.exe
笔记
//获取File对象中的所有文件(File对象形式)
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f);
}
==============
.\.idea
.\a.txt
.\H
.\myDir
.\myTest.txt
.\out
.\src
.\typora-setup-x64.exe
.\笔记
File file = new File("./myTest.txt");
//获取File对象中文件最后被修改的时间
//返回long类型的毫秒数
long time = file.lastModified();
//将毫秒数转换成Date类型的对象
Date date = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date));
==============
2022-08-11 16:08:39
5.删除功能
方法名 | 说明 |
---|---|
boolean delete() | 删除文件或目录(空) |
//文件对象
File file = new File("./myTest.txt");
if (file.delete()){
System.out.println("文件或目录删除成功!~");
}else {
System.out.println("文件或目录删除失败!~");
}
==========
文件或目录删除成功!~
//目录对象
File file = new File("./myDir");
if (file.delete()){
System.out.println("文件或目录删除成功!~");
}else {
System.out.println("文件或目录删除失败!~");
}
==========
文件或目录删除成功!~
//注:当删除不存在的文件或目录时,会返回false
//例:再次删除已删除的文件或目录,会返回false
//多级目录对象(要先把内部目录删除才能删除高级目录)
File file = new File("./H");
if (file.delete()){
System.out.println("文件或目录删除成功!~");
}else {
System.out.println("文件或目录删除失败!~");
}
==========
文件或目录删除失败!~
6.递归操作
//10以内累加计数
public class Test05 {
public static void main(String[] args) {
int sumNum =sumAll(10);
System.out.println(sumNum);
}
private static int sumAll(int i){
if (i == 1){
//结束
return 1;
}
return i + sumAll(i-1);
}
}
==========
55
//递归删除多目录
public class Test06 {
public static void main(String[] args) {
File file = new File("./H");
delDir(file);
}
private static void delDir(File file) {
//获取当前目录中的所有File类型的文件
File[] files = file.listFiles();
//判断目录是否为空
if(null != files){
for (File f : files) {
//判断目录是否为空
//如果是目录,递归自己调用自己
if (f.isDirectory()){
delDir(f);
}else{
//如果不是目录,则直接删除文件
f.delete();
}
}
}
//当目录为空,直接删除
file.delete();
}
}
7.课后习题
1.自定义异常类AgeException、NameException。当创建学生类对象时,要求年龄范围0-150,姓名2-4个长度,如果不在范围之内,则抛出异常。
2.递归实现获取目录下所有的文件和目录的绝对路径。
注:习题答案在下方链接,欢迎同学们批评指正呀!!!
java进阶基础—2.1----上一章节: 跳转
java进阶基础—课后习题: 跳转
java进阶基础—2.3----下一章节: 跳转