Java基础-File类
来源:互联网 发布:淘宝办签证会有假的吗 编辑:程序博客网 时间:2024/05/18 01:30
File类概述
因为数据在硬盘上最常见的方式,就是文件。而文件本身有很多的属性,比如说:文件大小,是否可读,是否隐藏
等。那么,java为了方便我们对文件进行操作,就提供了File类供我们使用。
一个File对象,既可以表示一个文件,也可以用来表示文件夹。理解了这个,对之后学习File类有莫大的好处,最起码能一下看得出当前的file对象到底指的是目录(文件夹)还是文件。File类的三个构造方法: A:File(String pathname):根据指定的路径创建File对象。 B:File(String parent, String child):根据指定的父文件夹和子文件或者文件夹创建File对象 C:File(File parent, String child):根据指定的父文件夹对象和子文件或者文件夹创建File对象代码如下:
public class FileDemo { public static void main(String[] args) { // 方式1 File file = 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"); }}
注意:执行这段代码后,并没有在创建出这些目录和文件夹。这三个构造方法的作用是,将各自的file对象,指向了各自的目录和文件。要想创建出这些文件和目录,需要进一步操作。
File类的创建功能:
A:创建文件:public boolean createNewFile() — 创建文件,如果指定的文件不存在就创建,否则不创建
B:创建文件夹;
a:public boolean mkdir() — 创建指定的目录,如果目录已存在,就不创建
b:public boolean mkdirs() — 创建指定的目录,这个时候,可以创建多级目录,若父目录不存在,也一并创建
ps…绝对路径和相对路径
A:绝对路径:以盘符开始的路径,如:E:\0714深圳黑马基础班\day20
B:相对路径:不以盘符开始的路径,如:test\aaa
代码:
public class FileDemo { public static void main(String[] args) throws IOException { // 创建文件 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()); // 解决方案: // File file5 = new File("bbb"); // File file6 = new File(file5, "ccc"); // System.out.println("mkdir:" + file5.mkdir()); // System.out.println("mkdir:" + file6.mkdir()); // 如果目录过多,这样做就太麻烦。肿么办呢? File file4 = new File("bbb\\ccc"); System.out.println("mkdirs:" + file4.mkdirs()); // 创建文件 File file5 = new File("b.txt"); System.out.println("mkdir:" + file5.mkdir()); }}
结果:
这里需要特别注意的一点时,在创建文件或者文件夹时,一定要明确自己需要的时什么,不要调用了错误的方法,造成一些比较隐蔽的错误。
File类的判断功能:
删除功能:
public boolean delete():既可以删除文件,也可以删除文件夹。取决于你使用的对象。
需要注意的地方: 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()); }}
结果:
分析:
最后一个结果为false,是因为在bbb目录下,还有一个ccc目录,必须先删除ccc目录以及ccc目录下所有内容,bbb才能被删除
File类的判断功能:
boolean exists():判断file对象是否存在
boolean isFile():判断file对象是否是文件
boolean isDirectory():判断file对象是否是文件夹
boolean isAbsolute():判断file对象是否是绝对路径
boolean canRead():判断file对象是否可读
boolean canWrite():判断file对象是否可写
boolean isHidden():判断file对象是否隐藏
这些判断功能,主要用在我们需要对文件夹遍历,遍历过程中,需要对文件或者文件夹进行一些操作时,判断,符合条件的,我们才进行实质性的操作代码:
public class FileDemo { public static void main(String[] args) { File file = new File("a.txt"); System.out.println("exists:" + file.exists());// true System.out.println("isFile:" + file.isFile());// true System.out.println("isDirectory:" + file.isDirectory());// false System.out.println("isAbsolute:" + file.isAbsolute());// false System.out.println("canRead:" + file.canRead());// true System.out.println("canWrite:" + file.canWrite());// true System.out.println("isHidden:" + file.isHidden());// false }}
结果:
分析:
这里的结果,没有可比性,每个人的文件系统里面是否包含这些文件,决定这里的值。
File类的获取功能1:
String getAbsolutePath():绝对路径
String getPath():相对路径
String getName():文件名称
long length():文件大小,单位是字节
long lastModified():上次修改时间的毫秒值。
代码:
public class FileDemo { public static void main(String[] args) { // 需求:指向文件 File file = new File("bbb\\ccc\\a.txt"); System.out.println("getAbsolutePath:" + file.getAbsolutePath()); System.out.println("getPath:" + file.getPath()); System.out.println("getName:" + file.getName()); System.out.println("length:" + file.length()); System.out.println("lastModified:" + file.lastModified()); Date d = new Date(file.lastModified()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(d)); }}
结果:
File类的获取功能2:
public static File[] listRoots():列出可用的系统文件根目录
public String[] list():返回的是指定目录下所有文件或者文件夹的名称数组
public File[] listFiles():返回的是指定目录下所有文件或者文件夹对象数组
这里的获取功能,可以用于遍历某个目录下的所有文件和文件夹,并输出需要的结果
代码:
public class FileDemo { public static void main(String[] args) { // public static File[] listRoots() // File[] rootArray = File.listRoots(); // for (File root : rootArray) { // System.out.println(root); // } // 创建对象 File file = new File("d:\\"); // public String[] list() // String[] strArray = file.list(); // for (String str : strArray) { // System.out.println(str); // } // public File[] listFiles() File[] fileArray = file.listFiles(); for (File f : fileArray) { System.out.println(f.getName()); } }}
综合应用强调内容
需求:获取指定目录下指定后缀的文件名称: 方法一:先获取指定目录下所有文件或者文件夹的File数组,然后再遍历的时候进行判断。满足条件的就输 出该File的名称。 方法二:直接获取指定目录下满足条件的String(File)数组。然后遍历数组即可。 方法二相对比较方便,但是需要用到FileNameFilter文件名称过滤器类还有带参的list(filter)方法 public String[] list(FileNameFilter filter)代码:
public class FileDemo { public static void main(String[] args) { // 封装目录 File file = new File("d:\\"); // 获取满足条件的数组 String[] strArray = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { // 判断是否是文件,是否是以.mp4结尾 // System.out.println(dir + "---" + name); File file = new File(dir, name); // d:\我的文档 boolean flag = file.isFile(); boolean flag2 = name.endsWith(".mp4"); return flag && flag2; } }); // 遍历字符串数组 for (String str : strArray) { System.out.println(str); } }}
- Java基础-File类
- JAVA基础----File类
- java基础整理-File类
- java基础之File类
- 【File】File类基础
- Java基础19-IO之File类
- 黑马程序员-java基础 file类
- 黑马程序员--java基础9--File类
- java基础--IO流之File类
- 黑马程序员:Java基础总结----类 File
- Java io基础(一)FILE类
- 黑马程序员--java基础--File类
- 黑马程序员---Java基础---File类
- Java基础--IO流之File类
- java基础IO流--file类
- Java基础之-IO中的File类
- 3.Java基础:常见IO----->File类
- java基础学习day01-file类
- 友善mini2440:uboot和内核的移植
- 学英语
- 合唱队
- (练习用)挑7
- Ubuntu 14.04安装JDK
- Java基础-File类
- mini2440:uboot和内核的移植
- ubuntu14.04安装tomcat
- 链表划分
- 开源资 源
- mysql用户管理
- 基于HT for Web 3D技术快速搭建设备面板
- 关于String.split(String regex, int limit)
- 插入,冒泡,选择,快速排序,二分查找(Java版)