File类——>与电脑上的文件或文件夹产生一一对应的映射关系
1. File类在java.io包中
2. 文件或目录路径名的抽象表示形式
3. File 与真实硬盘中的文件或文件夹 不是同一个东西
File是在(堆)内存中的一个对象<——-映射——->硬盘上的文件或文件夹
即可以通过File对象 间接操作 文件或文件夹
4. 创建对象
没有无参数的构造方法
4.1 带(File parent,String child)参数的构造方法
在父类parent对象的路径下创建child文件
如
File pfile = new File(“E:/test”);
File file = new File(pfile,”love.txt”);
try {
System.out.println(file.createNewFile());//若文件不存在就返回true 且按照路径创建文件
//若文件已存在 返回false
} catch (IOException e)
{
e.printStackTrace();
}
4.2 带(String parent,String child)参数的构造方法
parent路径下创建child文件
如
File file = new File(“E:/test”,”love1.txt”);
try {
System.out.println(file.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
4.3 通常用的是带文件路径 (String pathName)的构造方法来创建
如
File file = new File(“E://test//TestFile.txt”);
//file对象 是在 堆内存中 创建出来一个对象空间
//路径是看 对象空间 能否 与硬盘中的一个真实文件 产生对应映射关系
//所以即使路径不对 也能创建对象 也不会产生错误 会有默认值
//但是不能用错误的路径创建文件 即creatNewFile();
//也不能用错误的路径 通过文件流去读取文件的内容 会出现问题
//硬盘上的文件名字是不区分大小写的 内存中的File对象 变量名区分大小写
5. 常用方法
主要方法:
5.1 String path = getAbsolutePath();
//获取文件的绝对路径
绝对路径 即从盘符开始 到文件结束
File file = new File(“E://test//TestFile.txt”);
//此时是绝对路径
System.out.println(file.getAbsoluteFile());
//输出 E:\test\TestFile.txt
相对路径 即到当前工程(项目)所在的位置找寻 (文件放在工程里可以跟着代码走 所以相对路径比较常用)
File file = new File(“test//TestFile.txt”);
//此时是相对路径 不带盘符
System.out.println(file.getAbsoluteFile());
//输出 E:\myworkspace\test\TestFile.txt
5.2 String name = getName();
//获取文件的名字
5.3 boolean = creatNewFile();
//创建新的文件 会有编译时异常
//路径要给对 不然创建失败 返回false
如
File file = new File(“E:/test//TestFile.txt”);
//创建file对象时 即使不加后缀名(如TestFile) 你调用什么方法就创建什么东西
//如 调用 createNewFile(); 就创建文件
//若 调用 mkdir(); 就创建文件夹
try {
boolean flag = file.createNewFile();//单独写会出现编译时异常 因为系统会认为你的路径可能会不对(比如乱写的)
//所以要添加处理异常的手段
} catch (IOException e) {
e.printStackTrace();
}
5.4 boolean = mkdir();
//创建新的文件夹 不会出现异常 因为文件夹不占用内存
//创建时 需要外层(父元素)真实存在 不然无法创建
//如果 文件已经存在 就无法创建
如
File file = new File(“E:/test//bbb/inner”);
file.mkdir();//返回 false
//创建时因为 bbb文件夹不存在
boolean = mkdirs();
//创建新的文件夹 即使没有外层(父元素) 也可以创建
5.5 String pname = getParent();
//获取当前file的父亲file名字
**File files = getParentFile();
//获取当前file的父亲file对象
如
File file = new File(“E:/test//bbb/inner”);
file.getParent();//输出 E:\test\bbb
//这个方法得到的只是名字 无法通过得到的名字 调用方法
file.getParentFile();
//这个方法得到的是对象 可以通过对象 调用方法
还可以通过循环找盘符
如
File file = new File(“E:/test//bbb/inner”);
File pfile = file.getParentFile();
while(pfile!=null){
pfile = pfile.getParentFile();
}
5.6 String[] names = list();
//获取当前file的所有儿子名字(文件调用这个方法返回是null 因为文件没有儿子 文件夹如果存在(不管里面有没有元素)返回的是地址 不存在返回null)
*File[] files = listFile();
//获取当前file的所有儿子对象(文件调用这个方法返回是null的 因为文件没有儿子 文件夹如果存在(不管里面有没有元素)返回的是地址 不存在返回null)
如
File file = new File(“E:/test//aaa/inner.txt”);
File[] files = file.listFiles();
//返回 null
//即如果是文件调用了这个方法(即使文件不存在) 返回都是null 因为文件已经到底了
File file = new File(“E:/test//aaa”);
File[] files = file.listFiles();
//此时调用方法的是文件夹 即使文件夹里面没有元素 仍然输出文件夹的地址 [Ljava.io.File;@1b6d3586
//若文件夹不存在 返回的是 null
//可以通过 files.length; (注意此时files是数组 可以调用数组的length属性)来判断文件夹里是否有文件
//一个文件长度为1
5.7 boolean = delete();
//删掉文件或空的文件夹 不能删除带元素的文件夹 可以用递归来删除带元素的文件夹
一般方法:
boolean = canRead();//是否可读
boolean = canWrite();//是否可读
boolean = canExecute();//是否可执行
boolean = isHidden();//是否是隐藏
boolean = isFile();//是否是文件
boolean = isDirectory();//判断当前file是否是一个目录
long = length();//获取文件中字节的个数
long = lastModified();//读取文件最后修改时间(返回毫秒值)
setlastModified();//修改文件的时间