(十七)文件类
来源:互联网 发布:浙大网络线怎么用 mac 编辑:程序博客网 时间:2024/06/05 06:31
File class(文件类)
1、定义
File class 是一个代表文件或者目录(文件夹)的类。
目录本质上是一个路径,用来标识文件。不占内存。
2、字段摘要
在windows中分隔路径用的是“;”,在Linux中用的是“:”。
pathSeparator
与系统有关的路径分隔符,为了方便,它被表示为一个字符串。字符串类型,好用。
pathSeparatorChar
与系统有关的路径分隔符。字符类型,为了节省空间。
separator
与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。字符串类型。
separatorChar
与系统有关的默认名称分隔符。字符类型。
3、构造方法
File(File parent,String child);
根据parent的路径child的文件,创建一个File对象。
File(String child);
创建一个file对象指向child。
仅仅将此路径标记为一个file对象,而不去检查这个文件是否真实存在。
4、重要方法
1.创建
createNewFile();
创建文件。只有当文件不存在的时候才会创建。此方法需要有一个boolean标记,创建成功返回一个true,创建失败返回一个file。在创建文件的时候,要求存放文件的路径要真实存在,如果不存在则报错,不会创建父目录。只能用于创建文件,不能用于创建目录。
boolean b = file.createNewFile();
mkdir();
创建目录。只能创建目录,不能创建文件。只能创建一层目录,不能一次性创建多层。
mkdirs();
创建多层目录。
2.删除
delete();
表示彻底删除文件或者目录。如果目录有子文件或子目录,则删除失败。
3.获取
getAbsoluteFile();
获取File对象的绝对路径。
getAbsolutePath();
获取传入的File对象的路径。
listFiles();
获取所有的子目录和子文件组成的File数组。
File[] fl = file.listFiles();
listFiles(new Filefileter);
获取所有子目录。参数不可变。
listFiles(new FilenameFilter);
获取所有文件目录的名字。参数不可变。
lastModified();
获取文件最后一次修改时间。返回值表示是修改时间到1970-01-01 00:00:00的毫秒值。
getName();
获取文件的名字。
getParent();
获取父目录。
4.判断
canExecute();
判断是否是可执行文件。
canRead();
判断是否可读文件。
canWrite();
判断文件是否可写。
exists();
判断路径是否真实存在。
isAbsoute();
判断是否是绝对路径。
路径
绝对路径:以盘符或者/开头的路径。和当前路径没有任何关系。
相对路径:不以盘符或者/开头的路径。以当前路径为基准进行计算。..表示的是上一层目录。
isDirectory();
判断是否是一个目录。
isFile();
判断是否是一个文件。
isHidden();
判断是否是隐藏文件。
5.设置
setLastModified(long l);
设置文件最后一次修改时间。参数也是long类型的毫秒值。
setExecutable(boolean b);
设置此文件是否可执行文件。
setReadable(boolean readable);
设置文件是否为可读文件。
setReadable(boolean readable,boolean ownerOnly);
设置用户对文件的可读权限。
setReadOnly();
设置文件是否为只读文件。
setWritable(boolean writable);
设置文件是否为可写文件。
setWritable(boolean writable,boolean ownerOnly);
设置用户对文件的可写权限。
renameTo(new File());
重命名。如果路径没有发生改变,则表示重命名此文件;如果路径发生来改变,则表示的是剪切此文件。
练习
删除目录
需要删除这个目录下的所有子目录和子文件。
public static void main(String[] args) { File file = new File("E:\\aaa"); delFile(file); } private static void delFile(File file) { // 判断file是否为null if (file == null) { throw new NullPointerException("亲,文件不能为空啊~~~"); } // 判断是一个目录还是一个文件 if (file.isDirectory()) { // 如果是目录,获取当前目录下的所有的子文件和子目录 File[] fs = file.listFiles(); // 遍历数组 for (File f : fs) { // 获取到该file对象之后,需要再次判断这个f是一个子文件还是一个子目录 delFile(f); } } // 无论是子目录还是子文件,都需要删除 file.delete(); }
统计目录
统计java文件和class文件的个数。
public class FileExer2 { // 记录Java文件的个数 static int javaCount = 0; // 记录class文件的个数 static int classCount = 0; public static void main(String[] args) { File file = new File("E:\\workspace"); statistic(file); System.out.println("Java文件:" + javaCount); System.out.println("class文件:" + classCount); } private static void statistic(File file) { // 判断file是否为空 if (file == null) { throw new NullPointerException(); } // 判断是否是一个目录 if (file.isDirectory()) { // 获取这个目录下的所有的子文件和子目录 File[] fs = file.listFiles(); for (File f : fs) { statistic(f); } } /* 在计算机中一个file如果不是目录,那么就是文件 */ else if (file.getName().endsWith(".java")) { // 如果是文件,判断是否是一个Java文件 javaCount++; } else if (file.getName().endsWith(".class")) { classCount++; } }}
提取文件
将某一个盘符下的所有docx文件提取到另外一个盘符下的docx目录下。
import java.io.File;import java.io.FilenameFilter;public class FileExer { static File docx = new File("E:\\DOCX"); public static void main(String[] args) { File file = new File("F:\\aaa"); get(file); } private static void get(File file) { // 判断file是否为空 if (file == null) { throw new NullPointerException(); } // 判断file是否是一个目录 if (file.isDirectory()) { // 获取这个目录下的所有的子目录和子文件 File[] fs = file.listFiles(); for (File f : fs) { get(f); } } else if (file.getName().endsWith(".docx")) { // 获取要提取的文件的名字 // 12.4test.docx String name = file.getName(); // 后去 . 最后一次出现的位置 int index = name.lastIndexOf("."); // 获取的是文件真正的名字 final String fileName = name.substring(0, index); File[] fs = docx.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.matches(fileName + "-\\d+\\.docx") || name.matches(fileName + "\\.docx"); } }); // 提取文件 file.renameTo(new File(docx, fileName + (fs.length == 0 ? "" : "-" + fs.length) + ".docx")); } }}
- (十七)文件类
- Java虚拟机--Class文件结构(十七)
- 【十七】类模板(上)
- (二十七)、枚举类
- 十七 内存映射文件
- 十七.文件上传
- Struts2学习笔记(十七) 文件下载(File Download)
- VS2010/MFC编程入门之十七(对话框:文件对话框)
- unity3d学习笔记(十七)--unity3d读取csv文件
- unity3d学习笔记(十七)--unity3d读取csv文件
- struts2学习笔记之十七(上传文件)
- IO学习(十七)文件的分割与合并
- VS2010/MFC编程入门之十七(对话框:文件对话框)
- 大数据WE阶段(十七)文件上传
- java基础整理十七(常用工具类)
- python 专题十七 类
- 类模板(十七)
- 程序人生(十七)
- 217. Contains Duplicate
- 【SpringData】轻松愉快之玩转SpringData( 第2章 使用传统方式访问数据库
- 数据结构实验之查找四:二分查找
- 信息检索导论笔记之1--3章
- Mapreduce与Yarn 原理分析
- (十七)文件类
- 安卓开发——如何判断软键盘是否弹出(显示)
- hiho182
- 移动端H5填坑指南
- n个数里最小的k个
- mysql优化之表的设计
- 【软工】黑白盒
- Linux到底是什么,它是怎么诞生的,它的诞生有怎样的意义!
- 数据结构实验之排序六:希尔排序