Java中的File类——学习小结

1.什么是File类

Java是面对对象的语言,计算机中的内容不是文件即是文件夹。
获取File类有三种方式【构造方法】:

  • File(String pathNmae);
    根据对应的文件路径创建获取对应的File类对象,可以是文件,可以是文件夹。
  • File(String parent, String child);
    根据对应的父目录文件夹路径,以及子文件名或者子文件夹名,创建对应的File类对象
  • File(File parent, String child);
    根据对应的父目录文件夹File类对象,以及子文件名或者子文件夹名,创建对应File类对象

代码格式:

/*
 * 创建File类对象过程
 */
public class Demo1 {
	public static void main(String[] args) throws IOException {
		//创建文件的三种方式
		//操作文件必须带有文件的后缀名。如1.txt
		File file = new File("F:\\test\\2.txt");
		//separator 根据系统自动补齐分隔符
//		File file1 = new File("F:" + File.separator + "test");
//		File file2 = new File("F:\\test","1.txt");
//		File file3 = new File(file, "aaa");
		System.out.println(file.createNewFile());
		System.out.println(file.createNewFile());
		
	}
}

文件的路径属性分为:

1.相对路径
2.绝对路径。

路径分隔符:

windows是 / 或 \\
Linux UNIX macOS 分隔符是/
File.separatorChar() 该方法会根据当前系统来自动补齐不同的分隔符

2.创建文件和文件夹

创建文件方法:

boolean createNewFile();
该方法通过File类对象调用,创建对应File类对象中保存的路径的普通文件。
若返回false,可能的原因有:

1.路径不合法
2.对应的文件夹没有写入权限
3.对应的文件已经存在

代码格式:

//创建File类对象file
		File file = new File("F:/test");
		
		//创建File类对象file2,并创建保存的子文件
		File file2 = new File(file, "file2.txt");
		System.out.println(file2.createNewFile());
创建文件夹方法:

(1)boolean mkdir();
该方法也是通过File类对象调用,创建对应File类对象中保存路径的文件夹。
若返回false,可能的原因有:

1.路径不合法
2.对应的文件夹没有写入权限
3.对应的文件夹已经存在

(2)boolean mkdirs();
通过File类对象创建其中保存的文件目录的所有对应文件夹,包括中间路径
(3)boolean renameTo(File dest);
通过File类对象调用,转为目标File类对象dest
该方法可重命名文件/文件夹和移动。
代码:

//创建File类对象file3,并创建保存的文件夹
		File file3 = new File(file, "bbb");
		System.out.println(file3.mkdir());
		
		//创建File类对象file4,并创建保存的文件夹目录
		File file4 = new File("F:/test/a/s/d/f/1");
		System.out.println(file4.mkdirs());

3.删除文件或文件夹

(1)boolean delete();
通过File类对象调用,删除对应的文件或者文件夹

【注意】
1.删除的文件或者文件夹都是直接抹掉数据,不是放入回收站
2.无法删除非空文件夹,文件夹中存在其他内容无法整体删除。

(2)void deleteOnExit();
程序退出时删除对应的文件或者文件夹
代码:

/*
 * 删除文件或文件夹
 */
public class Demo3 {
	public static void main(String[] args) throws IOException {
		
		File file = new File("F:/test/删除该文件");
		file.createNewFile();
		//删除文件
		System.out.println(file.delete());
		
		
		File file2 = new File("F:/test/删除文件夹");
		file2.mkdir();
		//删除文件夹
		System.out.println(file2.delete());
		
		//deleteOnExit
		File file3 = new File("F:/test/2.txt");
		file3.deleteOnExit();
	}
}

4.文件属性判断

  • boolean isFile();
    判断是否是一个普通文件
  • boolean isDirctory();
    判断是否是一个文件夹
  • boolean isAbsolute();
    判断是否使用了绝对路径
  • boolean isHidden();
    判断是否是隐藏文件
  • boolean exists();
    判断文件是否存在

代码:

//判断是否为文件后者文件夹
   	System.out.println(new File("F:/test/bbb").isFile());
   	System.out.println(new File("F:/test/bbb").isDirectory());
   	
   	//判断不存在的文件和文件夹
   	//若不存在,都为false
   	System.out.println(new File("F:/test/qqq.zip").isFile());
   	System.out.println(new File("F:/test/qqq").isDirectory());

5.获取文件属性

没什么大用。因为不管文件是否存在,都能得到相应属性。因为返回的是创建对象中保存的地址和文件名。

1.String getPath();
	获取File类对象保存的路径
2.String getName();
	获取当前File类对象中保存的文件名或者文件夹名
3.String getParent();
	获取当前File类对象对应文件或者文件夹的父目录路径
4.String getAbsolutePath();
	获取当File类对象对应文件或者文件夹的绝对路径

其中也存在两个有用的方法:

1.long lastModified()
	获取文件的最后一次修改时间,返回值是一个时间戳类型。
2.long length();
	获取文件的大小,占用硬盘空间字节数。

代码:

/获取文件的路径和姓名
		System.out.println(file.getPath());
		System.out.println(file.getName());
		
		//获取指定子集合(要头不要尾)
		String str = "F:/test/bbb/1.zip";
		System.out.println(str.substring(str.lastIndexOf('b') ));
		
		//获取文件的父目录
		System.out.println(file.getParent());
		//获取指定子集和
		System.out.println(str.substring(0, str.lastIndexOf('/')));
		
		//获取文件的绝对路径
		System.out.println("--------------------------");
		System.out.println(new File("99999999").getAbsolutePath());

6.列表方法:

  • static File[] listRoots();
    通过File类调用,有且针对于Windows操作系统有效,获取当前电脑内所有根盘符对象,如果是Linux,UNIX,macOS是无效的。
  • File[] listFiles();
    通过File类对象调用,获取当前File类对象对应文件夹下的所有子文件或者子文件夹的File类对象数组
  • String[] list();
    通过File类对象调用,获取当前File类对象对应文件夹下的所有子文件或者子文件夹的String类型文件名或者文件夹名字数组

代码:

/*
 * 获取文件的属性
 */
public class Demo6 {
	public static void main(String[] args) {
		File file = new File("F:/test/bbb/3.txt");
		
		//file.lastModified()最后一次修改时间
		long lastModified = file.lastModified();
		System.out.println(lastModified);
		
		//对于日期展示的处理方式
		//SimpleDateFormat一个日期的规范格式
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
		String format = simpleDateFormat.format(new Date(lastModified));
		System.out.println(format);
		
		//获取文件的大小(占用字节数)
		//如果操作的是文件夹,返回0L
		System.out.println(file.length());
		System.out.println(new File("F:/test/bbb").length());
		
	}
}

7. FilenameFilter文件名过滤器

功能:

【用于获取指定类型的文件】

/*
 * 获取文件列表、文件名、增强for循环!!!
 */
public class Demo7 {
	public static void main(String[] args) {
		//获取当前电脑内所有根盘符对象
		File[] listRoots = File.listRoots();
		/*
		 * for(数据类型 变量名:数组/集合 ){
		 * 
		 * 
		 * }
		 */
		for (File file : listRoots) {
			System.out.println(file);
		}
		
		System.out.println("-----------------");
		//获取目标文件夹下的所有子文件和子文件夹
		File file = new File("E:/java");
		File[] listFiles = file.listFiles();
		for (File file2 : listFiles) {
			System.out.println(file2);
		}
		
		//获取子文件或子文件夹的名字
		System.out.println("=====================");
		String[] list = file.list();
		for (String string : list) {
			System.out.println(string);
		}
		
	}
}
发布了5 篇原创文章 · 获赞 1 · 访问量 244

猜你喜欢

转载自blog.csdn.net/qq_41986648/article/details/104505364
今日推荐