File java IO
Posted hello4world
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了File java IO相关的知识,希望对你有一定的参考价值。
1.File简介
/** * java.io.File * File用于表示文件系统中的一个文件或目录的 * * 使用File我们可以: * 1:访问其表示的文件或目录的属性(名字,大小等) * 2:创建,删除文件或目录 * 3:访问一个目录中的子项 * * 但是不能访问文件数据. */ public class FileDemo { public static void main(String[] args) { /* * 创建File是要指定路径 * 路径有两种:绝对路径和相对路径 * 绝对路径通常不适用,虽然清晰明了, * 但是无法做到跨平台. * * 相对路径不能直观体现出实际位置,但是 * 灵活并适应各种不同运行环境. * 在eclipse中执行代码时,"./"当前目录 * 指的就是当前项目目录 */ File file = new File("./demo.txt"); //获取文件名 String name = file.getName(); System.out.println(name); //获取长度(单位是字节) long len = file.length(); System.out.println(len+"字节"); //获取绝对路径 String path = file.getAbsolutePath(); System.out.println(path); /* * 是否可读,可写,是否为隐藏文件 */ boolean cr = file.canRead(); boolean cw = file.canWrite(); boolean ih = file.isHidden(); System.out.println("可读:"+cr); System.out.println("可写:"+cw); System.out.println("隐藏文件:"+ih); } }
2.创建文件
/** * 使用File创建一个文件 */ public class CreateNewFileDemo { public static void main(String[] args) throws IOException { /* * 在当前项目目录下新建一个文件test.txt */ File file = new File("./test.txt"); /* * boolean exists() * 判断当前File表示的文件或目录是否 * 已经存在,存在则返回true */ if(!file.exists()) { //创建该文件 file.createNewFile(); System.out.println("文件已创建!"); }else { System.out.println("文件已存在!"); } } }
3.删除文件
/** * 删除一个文件 */ public class DeleteFileDemo { public static void main(String[] args) { /* * 将当前目录下的test.txt文件删除 */ File file = new File("./test.txt"); if(file.exists()) { file.delete(); System.out.println("文件已删除!"); }else { System.out.println("文件不存在!"); } } }
4.创建一个目录
/** * 创建一个目录 */ public class MkdirDemo { public static void main(String[] args) { /* * 在当前目录下新建一个名为demo的目录 */ File dir = new File("./demo"); if(!dir.exists()) { dir.mkdir(); System.out.println("目录已创建!"); }else { System.out.println("目录已存在!"); } } }
5.创建一个多级目录
/** * 创建一个多级目录 */ public class MkdirsDemo { public static void main(String[] args) { /* * 在当前目录下新建目录:a/b/c/d/e/f */ File dir = new File("./a/b/c/d/e/f"); if(!dir.exists()) { //将不存在的父目录一同创建出来 dir.mkdirs(); System.out.println("目录已创建!"); }else { System.out.println("目录已存在!"); } } }
6.删除目录
/** * 删除目录 */ public class DeleteDirDemo { public static void main(String[] args) { //删除当前目录中的demo目录 File dir = new File("./demo"); if(dir.exists()) { /* * 删除目录有一个前提条件.就是该 * 目录是一个空目录. */ dir.delete(); System.out.println("目录已删除!"); }else { System.out.println("目录不存在!"); } } }
7.访问一个目录中的所有子项
/** * 访问一个目录中的所有子项 */ public class ListFilesDemo { public static void main(String[] args) { //获取当前目录中的所有子项 File dir = new File("."); /* * boolean isFile() * 判断当前File表示的是否为文件 * * boolean isDirectory() * 判断当前File表示的是否为目录 */ if(dir.isDirectory()) { /* * File[] listFiles() * 获取当前目录中的所有子项,数组中每一个 * 元素就是其中一个子项 */ File[] subs = dir.listFiles(); for(int i=0;i<subs.length;i++) { File sub = subs[i]; System.out.println(sub.getName()); } } } }
8.将目录中符合过滤器要求的子项获取
/** * 获取一个目录下指定的子项 * File[] listFiles(FileFilter filter) * 将目录中符合过滤器要求的子项获取 */ public class ListFilesDemo2 { public static void main(String[] args) { /* * 获取当前目录中所有名字以"."开头的内容 */ File dir = new File("."); if(dir.isDirectory()) { // MyFilter filter = new MyFilter(); //匿名内部类定义过滤器 FileFilter filter = new FileFilter() { public boolean accept(File file) { return file.getName().startsWith("."); } }; //回调模式 File[] subs = dir.listFiles(filter); System.out.println(subs.length); for(int i=0;i<subs.length;i++) { File sub = subs[i]; System.out.println(sub.getName()); } } } } class MyFilter implements FileFilter{ public boolean accept(File file) { String name = file.getName(); System.out.println("正在过滤:"+name); return name.startsWith("."); } }
9.递归删除目录
public class Test { public static void main(String[] args) { File dir = new File("./a"); delete(dir); } /* * 删除时首先判断file表示的是否为目录 * 若是文件则直接删除,若是目录则应当前 * 获取该目录所有子项并逐个删除后再删除 * 该目录. */ public static void delete(File file) { if(file.isDirectory()) { //先将该目录清空 //1获取该目录中的所有子项 File[] subs = file.listFiles(); //2逐个删除子项 for(int i=0;i<subs.length;i++) { File sub = subs[i]; /* * 递归调用:一个方法内部调用 * 自己方法的现象. */ delete(sub); } } file.delete(); } }
以上是关于File java IO的主要内容,如果未能解决你的问题,请参考以下文章
java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段
开销与代码速度(java.io.File 数组与 java.lang.String 数组)