javaSE-File类与Properties

一.File类

1.File类的特点

  • 文件和文件目录路径的抽象表示形式,与平台无关
  • File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。
    如果需要访问文件内容本身,则需要使用输入/输出流。
  • 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
  • File对象可以作为参数传递给流的构造器

2.File类的构造方法

构造方法作用
public File(String pathname)以pathname为路径创建File对象,可以是绝对路径或者相对路径
public File(String parent,String child)以parent为父路径,child为子路径创建File对象。
public File(File parent,String child)根据一个父File对象和子文件路径创建File对象

3.File类的使用

  • 因为windows和UNIX路径之间的分割符号不一样,但是java是跨平台的,所以java提供了一个常量public static final String separator。来解决这个问题

4.File类的常用方法

方法作用
public String getAbsolutePath()获取绝对路径
public String getPath()获取路径
public String getName()获取名称
public String getParent()获取上层文件目录路径。若无,返回null
public long length()获取文件长度(即:字节数)。不能获取目录的长度
public long lastModified()获取最后一次的修改时间,毫秒值
public String[] list()获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles()获取指定目录下的所有文件或者文件目录的File数组
public boolean renameTo(File dest)把文件重命名为指定的文件路径
public boolean isDirectory()判断是否是文件目录
public boolean isFile()判断是否是文件
public boolean exists()判断是否存在
public boolean canRead()判断是否可读
public boolean canWrite()判断是否可写
public boolean isHidden()判断是否隐藏
public boolean createNewFile()创建文件。若文件存在,则不创建,返回false
public boolean mkdir()创建文件目录。如果此文件目录存在,就不创建了。 如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs()创建文件目录。如果上层文件目录不存在,一并创建
public boolean delete()删除文件或者文件夹

5.例子

package utils;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

public class FileUtils {
	/**
	 * 
	 * @author Antg
	 * @date 2021年6月30日
	 * @param null
	 * @retun null
	 * @Description 创建文件及文件夹
	 */
	public static void createFile() throws IOException {
		File f1 = new File("./src/a/b1/c1");
		File f2 = new File("./src/a/b1/c2");
		File f3 = new File("./src/a/b2/c1");
		File f4 = new File("./src/a/b2/c2");
		File f5 = new File("./src/a/b1.jpg");
		File f6 = new File("./src/a/b2.txt");
		File f7 = new File("./src/a/b1/c2/c2.jpg");

		f1.mkdirs();
		f2.mkdirs();
		f3.mkdirs();
		f4.mkdirs();
		f5.createNewFile();
		f6.createNewFile();
		f7.createNewFile();
	}

	/**
	 * 
	 * @author Antg
	 * @date 2021年6月30日
	 * @param file
	 *            要删除的文件
	 * @retun boolean 是否删除成功
	 * @Description 删除一个文件或文件夹 思路: 递归删除 首先获取这个文件下的所有子文件和目录 如果是文件 那么删除如果是目录递归这个方法
	 */
	public static boolean delFile(File file) {
		// 校验文件是否存在
		if (file == null || !file.exists()) {
			System.out.println("文件不存在");
			return false;
		}
		// 如果是一个文件直接删除
		if (file.isFile()) {
			return file.delete();
		} else {
			// 如果是一个目录,则先删除它下面的所有,然后再将该文件夹删除
			if (file.listFiles().length == 0) {
				// 如果是空目录则直接删除
				file.delete();
				return true;
			}
			// 如果不是空目录,则遍历
			for (File f : file.listFiles()) {
				if (f.isFile()) {
					f.delete();
				} else if (f.isDirectory()) {
					delFile(f);
				}
			}
			// 遍历完后将该目录删除
			return file.delete();
		}
	}

	/**
	 * 
	 * @author Antg
	 * @date 2021年6月30日
	 * @param file
	 *            要操作的文件
	 * @retun ArrayList<File> 返回一个文件list
	 * @Description 获取该文件夹下的所有子文件和目录
	 */
	public static ArrayList<File> getFileList(File file) {
		// 校验文件是否存在
		if (file == null || !file.exists()) {
			System.out.println("文件不存在");
			return null;
		}
		ArrayList<File> fileList = new ArrayList<File>();
		if (file.isFile()) {
			fileList.add(file);
		} else {
			for (File f : file.listFiles()) {
				if (f.isFile()) {
					fileList.add(f);
				} else if (f.isDirectory()) {
					fileList.add(f);
					fileList.addAll(getFileList(f));
				}
			}
		}
		return fileList;
	}

	/**
	 * 
	 * @author Antg
	 * @date 2021年6月30日
	 * @param file 要操作的文件
	 * @retun size 文件大小(字节)
	 * @Description 获取指定目录的占用空间的大小(以字节为单位)
	 */
	public static long getFileSize(File file) {
		// 校验文件是否存在
		if (file == null || !file.exists()) {
			System.out.println("文件不存在");
			return 0L;
		}
		if(file.isFile()){
			return file.length();
		}else if(file.isDirectory()){
			long size = 0L;
			for(File f:file.listFiles()){
				size+=getFileSize(f);
			}
			return size;
		}else{
			System.out.println("其他错误");
			return 0L;
		}
		
	}
}

二.Properties类

1.概述

该类专门用于读取以".properties"为后缀的文件,该类文件中存储着格式为key=value的键值对,多用于配置文件

2.代码实现

package utils;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class ReadConfig {
	private static Properties properties = new Properties();
	private static BufferedReader br;
	/**
	 * 
	 * @author Antg
	 * @date 2021年7月6日
	 * @param 要获取的属性
	 * @retun 获取的属性值
	 * @Description 读取properties的数据
	 */
	public static String getConfig(String key){
		try {
            //配置文件路径
			String config = "resource/config/conf.properties";
            //创建缓存流来读取文件
			br = new BufferedReader(new FileReader(config));
            //将流的信息加载到properties对象
			properties.load(br);
            //获取key对于的值
			return properties.get(key).toString();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}finally{
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Antgeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值