File类
File类用来将文件或文件夹封装成对象,方便对文件或文件夹进行操作
File对象还可以作为参数进行传递
File类常见方法操作:
构造方法:
1、File(文件名)
File file=new File(文件名):根据指定目录,创建File对象
创建一个File对象,并指向指定路径
2、File(父目录(文件夹),文件名)
File file=new File(路径,文件名):将File对象指向某个路径下的文件
3、File(父文件夹,文件名)
代码示例:
// 方式1
File file1 = new File("d:\\a.txt");
File file2 = new File("d:\\aaa");
// 方式2
File file3 = new File("d:\\", "a.txt");
File file4 = new File("d:\\", "aaa");
// 方式3
File file5 = new File("d:\\");
File file6 = new File(file5, "a.txt");
File file7 = new File(file5, "aaa");
创建:
1、创建文件:createNewFile(),当文件不存在时,创建一个空文件
默认路径:当前项目
2、创建文件夹:mkdir():创建此抽象路径名指定的目录
mkdirs():创建多级文件夹
代码示例:
// 创建文件
File file = new File("d:\\a.txt");
System.out.println("createNewFile:" + file.createNewFile());
// 创建文件 忘了写路径名称了,以当前项目路径所在路径为父目录
File file2 = new File("a.txt");
System.out.println("createNewFile:" + file2.createNewFile());
// 创建目录
File file3 = new File("aaa");
System.out.println("mkdir:" + file3.mkdir());
// 创建多级目录 如果想创建一个指定的目录或者文件,要求,父目录必须存在。
// File file4 = new File("bbb\\ccc");
// System.out.println("mkdir:" + file4.mkdir());
// 解决方案:可以通过mkdirs来创建多级文件夹
File file4 = new File("bbb\\ccc");
System.out.println("mkdirs:" + file4.mkdirs());
// 创建文件
File file5 = new File("b.txt");
System.out.println("mkdir:" + file5.mkdir());
删除:Java的删除,不走回收站
1、删除:delete(),删除此抽象路径表示的文件或目录
如果删除的文件夹内还有内容,不能删除
必须先删除这个文件夹中的内容
2、deleteOnExit(),当虚拟机终止时,删除文件或目录(多用于临时文件)
/*
* 注意:
*A:如果你删除的目录下还有内容,那么,必须先把所有内容删除完毕后,在删除目录。
*B:java语言的删除不走回收站。
*/
public class FileDemo {
public static void main(String[] args) {
// 需求:我要删除a.txt
File file = new File("a.txt");
System.out.println("delete:" + file.delete());
// 需求:我要删除aaa
File file2 = new File("aaa");
System.out.println("delete:" + file2.delete());
// 需求:我要删除bbb
File file3 = new File("bbb");
System.out.println("delete:" + file3.delete());
}
}
判断:
1、exists():文件或文件夹是否存在
2、isDirectory():是否是一个目录
3、isFile():是否是文件
4、isHidden():是否是隐藏文件
5、isAbsolute():是否是绝对路径
6、canRerad():文件是否可读
7、canWrite():文件是否可写
File file = new File("a.txt");
//判断文件是否存在
System.out.println("exists:" + file.exists());
//判断是否是文件
System.out.println("isFile:" + file.isFile());//
//判断是否是文件夹
System.out.println("isDirectory:" + file.isDirectory());
//判断是否是绝对路径
System.out.println("isAbsolute:" + file.isAbsolute());
//判断文件是否能被读
System.out.println("canRead:" + file.canRead());
//判断文件是否能被写
System.out.println("canWrite:" + file.canWrite());
//判断文件是否是隐藏文件
System.out.println("isHidden:" + file.isHidden());
获取:
1、length():文件大小(单位字节)
2、getName():返回文件或文件目录的名称
3、getPath():返回相对路径名字符串
4、getAbsolutePath():返回绝对路径字符串(全路径)
5、getParent():返回抽象路径父目录的抽象路径名
6、lastModified():最后一次的修改时间(修改时间毫秒值)
重要获取功能:
1、listRoots():获取可用的文件系统根目录(盘符)
2、list():列出指定目录下的文件或文件夹的根目录(字符串)
3、listFiles():列出指定目录下的所有文件对象(文件对象)
代码示例:
//创建对象
File file = new File("d:\\");
//获取指定目录中的所有文件对象名称,并遍历
String[] strArray = file.list();
for (String str : strArray) {
System.out.println(str);
}
//获取指定目录中的所有文件对象,并遍历
File[] fileArray = file.listFiles();
for (File f : fileArray) {
System.out.println(f.getName());
}
文件名称过滤器:
list(new FilenameFilter(){ 复写accept方法 })
代码示例:获取指定目录下的所有.java文件名称
//封装目录
File file = new File("F:\\03.06\\day01");
// 获取满足条件的数组
String[] strArray = file.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
// 判断是否是文件,是否是以.mp4结尾
File file = new File(dir, name);
boolean flag = file.isFile();
boolean flag2 = name.endsWith(".java");
return flag && flag2;
}
});
// 遍历字符串数组
for (String str : strArray) {
System.out.println(str);
}
Properties类
Properties是hashtable的子类。它具备map集合的特点。而且它里面存储的键值对都是字符串。
Properties是集合中和IO技术相结合的集合容器。
特点:
可以用于键值对形式的配置文件。
那么在加载数据时,需要数据有固定格式:键=值。
可以操作硬盘上的数据
Properties基本操作:
1、设置和获取元素:
代码演示
//创建Properties对象
Properties p=new Properties();
p.setProperty("a", "b");
p.setProperty("c", "d");
System.out.println(p);
//获取
String value=p.getProperty("a");
System.out.println(value);
//重新赋值
p.setProperty("a", "bb");
System.out.println(p);
//遍历Properties
Set<String> s=p.stringPropertyNames();
for(String str:s){
System.out.println(str);
//根据键,获得Properties中的值
String v=p.getProperty(str);
System.out.println(v);
}
2、将流中的数据装入到集合
分析:
1、用一个流和Properties.properties文件关联。
2、读取一行数据,将该行数据用"="进行切割。
3、等号左边作为键,右边作为值。存入到Properties集合中即可
代码演示:
//创建Properties对象
Properties p = new Properties();
//创建字符读对象
FileReader fr = new FileReader("Properties.properties");
//将流中的数据加载进集合。
p.load(fr);
fr.close();
Set<String> s=p.stringPropertyNames();
for(String str:s){
System.out.println(str);
//根据键,获得Properties中的值
String v=p.getProperty(str);
System.out.println(v);
}