一.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 {
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();
}
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();
}
}
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;
}
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;
public static String getConfig(String key){
try {
String config = "resource/config/conf.properties";
br = new BufferedReader(new FileReader(config));
properties.load(br);
return properties.get(key).toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}