Java File类
File类
- File类:代表物理盘符中的一个文件或者文件夹
- 方法:
createNewFile()
:创建一个新文件mkdir()
:创建一个新目录delete()
:删除文件或空目录exists()
:判断File对象所对象所代表的对象是否存在getAbsolutePath()
:/获取文件的绝对路径getName ()
:取得名字getParent ()
:获取文件/目录所在的目录isDirectory()
:是否是目录isFile()
:是否是文件length()
:获得文件的长度listFiles()
:列出目录中的所有内容renameTo()
:修改文件名为
分隔符
public static void separator(){
System.out.println("路径分隔符"+ File.pathSeparator);
System.out.println("名称分隔符"+ File.separator);
}
文件操作
创建文件
- 对文件对象进行打印时,打印的为创建时的路径
- 使用
createNewFile()
创建文件时,如果文件已存在不再创建文件,返回false
File file = new File("F:\\file.txt");
System.out.println(file.toString());//打印该路径,创建的对象可能存在可能不存在
//判断文件是否存在,文件不存在进行创建文件
if(!file.exists()){
boolean b = file.createNewFile();//创建文件,多次运行返回false,因为文件已经存在,不再创建
System.out.println("创建结果为:"+b);
}
删除文件
- 直接删除
System.out.println("删除结果为:"+file.delete());
- JVM退出时删除
file.deleteOnExit();
Thread.sleep(5000);//休眠五秒
获取文件信息
System.out.println("获取文件的绝对路径:"+file.getAbsolutePath());
System.out.println("获取路径:"+file.getPath());//输出的为创建对象时写入的路径
System.out.println("获取文件名称:"+file.getName());
System.out.println("获取父目录:"+file.getParent());
System.out.println("获取文件长度:"+file.length());
System.out.println("获取文件的最后修改时间:"+new Date(file.lastModified()).toLocaleString());//将获得的时间转为Date类型
判断
System.out.println("是否可写:"+file.canWrite());
System.out.println("是否是文件:"+file.isFile());
System.out.println("是否隐藏:"+file.isHidden());
文件夹操作
创建文件夹
mkdir()
:只能创建单级目录mkdirs()
:可以创建多级目录
File dir = new File("F:\\test\\a");
System.out.println(dir.toString());
if(!dir.exists()){
//dir.mkdir();//只能创建单级目录
System.out.println("创建结果为:"+dir.mkdirs());//可以创建多级目录
}
删除文件夹
- 直接删除:删除最底层目录,该目录必须是空目录
System.out.println("删除结果:"+dir.delete());
- JVM删除
dir.deleteOnExit();
Thread.sleep(5000);
获取文件夹信息
System.out.println("获取绝对路径:"+dir.getAbsolutePath());
System.out.println("获取路径:"+dir.getPath());//输出的为创建对象时写入的路径
System.out.println("获取文件夹名称:"+dir.getName());
System.out.println("获取父目录:"+dir.getParent());
System.out.println("获取文件夹的最后修改时间:"+new Date(dir.lastModified()).toLocaleString());
判断
System.out.println("是否是文件夹:"+dir.isDirectory());
System.out.println("是否隐藏:"+dir.isHidden());
遍历文件夹
list()
:返回String[],返回文件名称listFiles()
:返回Files[],返回该路径下所有文件/文件夹的绝对路径
File dir2 = new File("F:\\java笔记");
String[] files = dir2.list();
//dir2.listFiles();
System.out.println("===========================");
for (String s : files) {
System.out.println(s);
}
使用 listFiles()
遍历
File[] f = dir2.listFiles();
System.out.println("===========================");
for (File file : f) {
System.out.println(file.toString());
}
FileFilter接口
public interface FileFIlter
boolean accept(File pathname)
- 调用File类中的
listFiles()
方法时,支持传入FileFilter接口实现类,对获取文件进行过滤,满足条件的才可返回
File[] f2 = dir2.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.getName().endsWith(".png")){
return true;
}
return false;
}
});
for (File file : f2) {
System.out.println(file.getName());
}
递归遍历文件夹
public static void listDir(File dir) throws Exception{
File[] files = dir.listFiles();
//如果文件夹不为空,文件长度大于0
if(files!=null && files.length>0){
for (File file : files) {
//如果是文件夹
if(file.isDirectory()){
listDir(file);//递归
}else{
System.out.println(file.getAbsoluteFile());
}
}
}
}
递归删除文件夹
public static void deleteDir(File dir) throws Exception{
File[] files = dir.listFiles();
//如果文件夹不为空,文件长度大于0
if(files!=null && files.length>0){
for (File file : files) {
if(file.isDirectory()){
deleteDir(file);
}else{
//删除文件
System.out.println(file.getAbsoluteFile()+"删除:"+file.delete());
}
}
}
System.out.println(dir.getAbsoluteFile()+"删除"+dir.delete());
}
Properties属性集合
- Properties:属性集合
- 特点:
- 存储属性名和属性值
- 属性名和属性值都是字符串类型
- 没有泛型(确定是字符串)
- 和流有关
创建集合
Properties properties = new Properties();
添加数据
properties.setProperty("name","A1");
properties.setProperty("age","20");
System.out.println(properties.toString());
遍历
Set<String> proNames = properties.stringPropertyNames();
for (String pro : proNames) {
System.out.println(pro+"="+properties.getProperty(pro));
}
流相关方法
list()
:写文件,有默认注释(不知道能不能修改)
PrintWriter printWriter = new PrintWriter("F:\\print.txt");
properties.list(printWriter);
printWriter.close();
store()
:写文件,.properties
中不允许出现中文,“注释”以转码形式存在
FileOutputStream fileOutputStream = new FileOutputStream("F:\\store.properties");
properties.store(fileOutputStream,"注释");
fileOutputStream.close();
- load():加载文件中的内容
Properties properties2 = new Properties();
FileInputStream fileInputStream = new FileInputStream("F:\\store.properties");
properties2.load(fileInputStream);
fileInputStream.close();