File

1、File的概念

java.io包下代表平台无关的文件和目录。也就是说如果希望在程序中操作文件或目录都可以通过File类来完成。

File可以新建、删除、和重命名文件和目录。但File不能访问文件本身,如果需要访问文件内容,则需要 I/O。

File类的实例表示一个文件或者目录(文件夹)。

构造一个File实例并不是创建这个目录或文件,而是该路径的一个抽象,它可能真实存在也可能不存在。(就是指向这个文件或目录)。


2、相对路径和绝对路径

  1. 路径分类:绝对路径、相对路径。
  2. 绝对路径:从根目录开始的路径,称为绝对路径。

  Windows系统中:盘符目录就是根目录,D:、E:

  Linux系统中:/就是根目录,从/开始的路径就是绝对路径

  1. 相对路径:相对于某个路径而言的路径

  相对于不同的路径,同样的相对路径,表达的是不同的路径。

  Dos命令行中:相对于当前路径(Dos命令行所在的路径),a/b/c.txt。

  Eclipse中:相对于当前工程的根目录。


 File类的构造方法

File(File parent, String child) 
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

File(String pathname) 
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

File(String parent, String child) 
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

File(URI uri) 
通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。

代码示例:

import java.io.File;

public class 构造方法 {
		public static void main(String[] args) {
			File file1 = new File("F:/0715大数据第1阶段/aaa.txt");  // 绝对路径指向文件
			File file2 = new File("F:/0715大数据第1阶段","aaa.txt");// 绝对路径指向文件
			File path1 = new File("F:/0715大数据第1阶段");  // 绝对路径指向目录(文件夹)
			File file3 = new File(path1,"aaa.txt");  //绝对路径指向文件
					
			File f = new File("test.txt");  //相对路径 -----> 相对当前项目的根目录	
	}
}

File类的常用方法

(1)创建的方法

boolean createNewFile():创建当前File对象所描述的路径的文件

 

boolean mkdir():创建当前File对象所描述的路径的文件夹(如果父级路径不存在,那么不会自动创建父级路径)

 

boolean mkdirs():创建当前File对象所描述的路径的文件夹(如果父级路径不存在,那么自动创建父级路径)

 

 演示过程:

①我先创建一个空的文件夹。

File_第1张图片

②编辑代码,创建文件。

public class 创建方法 {
	public static void main(String[] args) throws Exception {
		File f1 = new File("F:\\FILEandIO");
		f1.createNewFile();
		
		File f2 = new File(f1,"1.txt");
		f2.createNewFile();
	}
}

结果:

File_第2张图片

③在目前目录创建文件夹。

public class 创建方法 {
	public static void main(String[] args) throws Exception {
		File f1 = new File("F:\\FILEandIO");
		f1.createNewFile();
		
		File f2 = new File(f1,"a");
		f2.mkdir();
	}
}

结果:

File_第3张图片

④一次性创建多层文件夹。

public class 创建方法 {
	public static void main(String[] args) throws Exception {
		File f1 = new File("F:\\FILEandIO");
		f1.createNewFile();
		
		File f2 = new File(f1,"a/c/d");
		f2.mkdirs();
	}
}

File_第4张图片


(2)删除的方法

delete():删除调用者描述的文件或者文件夹

注意事项

  1、delete在删除文件夹的时候,只能删除空文件夹

  2、delete方法不走回收站

public class 创建方法 {
	public static void main(String[] args) throws Exception {
		File f1 = new File("F:\\FILEandIO");
		f1.createNewFile();
		
		File f2 = new File(f1,"a/c/d");
		f2.delete();
		File f3 = new File(f1,"a/c");
		f3.delete();
		File f4 = new File(f1,"a");
		f4.delete();
                File f5 = new File(f1,"1.txt");
                f5.delete();
		
	}
}

File_第5张图片

(3)重命名

renameTo(File dest)

调用者是当前的文件或者文件夹的路径对象

参数是变化之后的文件或者文件夹的路径对象

 

注意事项

如果在同一个文件夹下,修改路径,就是重命名。

  如果在不同文件夹下,修改路径,就是剪切。

重命名:

public class 创建方法 {
	public static void main(String[] args) throws Exception {
		//记录进行处理的文件夹目录
		File f = new File("F:\\FILEandIO");
		//记录创建文件
		File f1 = new File(f,"1.txt");
		//创建文件
		f1.createNewFile();
		//记录和f1同在一个目录下的第二个文件
		//下面代码等执行过上面的再解开注释执行下面的
		/*File f2 = new File(f,"2.txt");
		f1.renameTo(f2);*/
		
	}
}

执行前后:

File_第6张图片

File_第7张图片

剪切:

public class 重命名 {
	public static void main(String[] args) throws Exception {
		File f = new File("F:\\FILEandIO");
		File ff = new File(f,"重命名");
		ff.mkdir();
		File f1 = new File(ff,"a");
		File f2 = new File(ff,"b");
		f1.mkdir();
		f2.mkdir();
		File f3 = new File(f1,"1.txt");
		f3.createNewFile();
		
		//到这里我们是创建了一个文件夹下面有两个子文件夹,其中a文件夹中有一个1.txt的文件。
		//这里不光是剪切,更重要的是同时进行了重命名
		File f4 = new File(f2,"2.txt");
		f3.renameTo(f4);
	}
}

(4)判断功能的方法

exists():判断当前调用者File对象,是否存在

isFile():判断当前调用者File对象,是否是文件

isDirectory():判断当前调用者File对象,是否是文件夹

 

 

public class 判断 {
	public static void main(String[] args) {
		File f =new File("F:\\FILEandIO/重命名");
		File f1 = new File(f,"b");
		File f2 = new File(f1,"2.txt");
		System.out.println(f1.exists());
		System.out.println(f1.isFile());
		System.out.println(f2.isFile());
		System.out.println(f1.isDirectory());
		System.out.println(f2.isDirectory());
	}
}

结果:

true
false
true
true
false

(5)获取功能的方法

getAbsolutePath():获取当前File对象的绝对路径

getPath():获取的就是在构造方法中封装的路径

getName():获取最底层的简单的文件或者文件夹名称(不包含所造目录的路径)

length():获取文件的字节个数

  该方法被文件File对象调用时,返回的是文件的字节个数

  该方法被文件夹File对象调用时,返回的数据是不确定的

String[] list():获取当前文件夹下的所有文件和文件夹的名称,到一个字符串数组中

File[] listFiles():获取当前文件夹下的所有文件和文件夹的File对象,到一个File对象数组中

 

 

import java.io.File;

public class 获取功能 {
	public static void main(String[] args) {
		File f = new File("F:\\\\FILEandIO/重命名");
		File f1 = new File(f,"b/2.txt");
		//获取绝对路径
		System.out.println(f1.getAbsolutePath());
		//获取构造方法中的路径
		System.out.println(f1.getPath());
		//最底层的文件夹名
		System.out.println(f1.getName());
		//获取文件内容的长度
		System.out.println(f1.length());
		//用一个字符串数组接收当前目录下所有目录
		String[] s = f.list();
		for(String ss:s)
			System.out.println(ss);
		//用File对象数组接受当前目录下所有目录
		File[] ff = f.listFiles();
		for(File fff:ff)
			System.out.println(fff);
	}
}

结果:

F:\FILEandIO\重命名\b\2.txt
F:\FILEandIO\重命名\b\2.txt
2.txt
0
a
b
F:\FILEandIO\重命名\a
F:\FILEandIO\重命名\b

练习:输出指定目录下包括子文件夹里的所有目录和文件。

import java.io.File;

public class 练习 {
		public static void main(String[] args) {
			File file = new File("F:\\FILEandIO");
			printFile(file);	
		}
		public static void printFile(File file){
			File[] fs = file.listFiles();
			for(File f:fs){
				if(f.isFile()){  // 是文件
					System.out.println("  文件:"+f.getName());
				}else{  // 是目录
					System.out.println("目录:"+f.getName());
					printFile(f);
				}
			}
		}
	}

 

你可能感兴趣的:(#JAVA思维框架)