.File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
参数:
String pathname:字符串的路径名称
路径可以是以文件结尾,也可以是以文件夹结尾
路径可以是相对路径,也可以是绝对路径
路径可以是存在,也可以是不存在
创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况
2.File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
参数:把路径分成了两部分
File parent:父路径
String child:子路径
好处:
父路径和子路径,可以单独书写,使用起来非常灵活;父路径和子路径都可以变化
父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象
常用方法
获取路径与名称方法
1.static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
2.static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
Flie类创建获取功能方法
public String getAbsolutePath() :返回此File的绝对路径名字符串。
注意:无论路径是绝对的还是相对的,getAbsolutePath方法返回的都是绝对路
public String getPath() :将此File转换为路径名字符串, 获取的构造方法中传递的路径
注意:将此File转换为路径名字符串。
public String getName() :返回由此File表示的文件或目录的名称。
public long length() :返回由此File表示的文件的长度。
注意:
文件夹是没有大小概念的,不能获取文件夹的大小
如果构造方法中给出的路径不存在,那么length方法返回0
Flie类创建判断功能方法
public boolean exists() :此File表示的文件或目录是否实际存在。
public boolean isDirectory() :此File表示的是否为目录。(判断构造方法的路径是否以文件夹结尾)
public boolean isFile() :此File表示的是否为文件。(判断构造方法的路径是否以文件结尾)
Flie类创建删除功能方法
public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
public boolean delete() :删除由此File表示的文件或目录。(不走回收站,谨慎操作!)
public boolean mkdir() :创建由此File表示的目录。
public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
File类遍历(文件夹)目录功能
public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
注意:
list方法和listFiles方法遍历的是构造方法中给出的目录
如果构造方法中给出的目录的路径不存在,会抛出空指针异常
如果构造方法中给出的路径不是一个目录,也会抛出空指针异常
枚举的概述:
枚举是在一定范围内取值,并且这个值必须是枚举类型中的任意一个,并且只能有一个
特点:
1.必须在规定范围内取值
2.这个值只能取一个
3.这个值可以是规定范围内的任意一个
枚举的本质就是一个Java类
枚举的引入
枚举的特点
枚举既然是一个类,那么枚举是否有构造方法,成员方法,静态方法,静态变量,成员变量,抽象方法?
有的话,有意义吗?
1.枚举中所有的成员,必须出现在枚举对象的下面
2.如果枚举类中有一个成员,那么枚举对象最后不能省略分号
3.枚举中构造方法必须私有
4.抽象方法有意义 - 可以用来描述某个枚举成员的信息,提高程序的可读性
5.枚举也是switch语句 的常量形式之一
switch语句中可以有哪些?
byte short int char String 枚举
public class EnumDemo02 {
public static void main(String[] args) {
Color c = Color.GREEN;
// c.show();
// Color.RED.desc();
switch (c) {
case RED:
Color.RED.desc();
break;
case GREEN:
Color.GREEN.desc();
break;
case YELLOW:
Color.YELLOW.desc();
break;
default:
break;
}
}
}
enum Color {
RED {
@Override
public void desc() {
System.out.println("我是红色");
}
},
GREEN {
@Override
public void desc() {
System.out.println("我是绿色");
}
},
YELLOW {
@Override
public void desc() {
System.out.println("我是黄色");
}
};
public int num;
public final static int A = 10;
private Color() {
}
private Color(int num) {
this.num = num;
}
public void show() {
System.out.println("show");
}
public abstract void desc();
}
枚举中常用的方法
String name()
返回此枚举常量的名称,与其枚举声明中声明的完全相同。
int ordinal()
返回此枚举常数的序数(其枚举声明中的位置,其中初始常数的序数为零)。
static <T extends Enum>
T valueOf(类 enumType, String name)
返回具有指定名称的指定枚举类型的枚举常量。
T valueOf(String name)
T[] values();
需求: 实现枚举对象 、 枚举下标、 枚举名称之间的相互转换
代码实现如下
public class EnumDemo03 {
public static void main(String[] args) {
// method01(TrafficLight.GREEN);
// method02("GREEN");
// method03(2);
TrafficLight t = TrafficLight.valueOf(TrafficLight.class, "GREEN");
System.out.println(t);
}
/**
* 已知枚举的下标,获取枚举的名称,枚举的对象
*/
public static void method03(int index) {
// values方法返回枚举数组
TrafficLight trafficLight = TrafficLight.values()[index];
System.out.println(trafficLight);
String name = trafficLight.name();
System.out.println(name);
}
/**
* 已知枚举的名称,获取枚举的下标和枚举对象
*/
public static void method02(String name) {
// T valueOf(String name)
TrafficLight trafficLight = TrafficLight.valueOf(name);
int index = trafficLight.ordinal();
System.out.println(trafficLight + ":" + index);
}
/**
* 已知枚举对象,获取枚举的下标和名称
*/
public static void method01(Enum<TrafficLight> e) {
System.out.println(e.ordinal() + ":" + e.name());
}
}
enum TrafficLight{
RED, GREEN, YELLOW
}