java day029 File类

42 篇文章 1 订阅
42 篇文章 1 订阅

java day029 File类

1.File类概述

SUN公司提供给程序员操作文件以及文件夹对应的类。这里涉及到对文件以及文件夹的增删改查工作。

不能操作文件内容,不能对文件进行读写操作。

2.File类构造方法

File(String pathName);
	根据指定的文件路径,或者文件夹路径,创建对应的File类对象。路径可以是相对路径,可以是绝对路径。
File(String parent, String childName);
	根据指定的父目录文件夹路径,和子文件或子文件夹的名字,创建对应的File类对象。
File(File parent, String childName);
	根据指定的父目录File类对象,和子文件或者子文件夹的名字,创建对应的File类对象。
import java.io.File;

public class TestFileConstructor {
	public static void main(String[] args) {
		
		//String pathName
		File file = new File("D:/MyJavaCode/1.txt");
		System.out.println(file);
		
		//String parent, String childName
		File file1 = new File("D:/MyJavaCode", "2.txt");
		System.out.println(file1);
		
		//File parent, String childName
		File file2 = new File(new File("D:/MyJavaCode/"), "3.txt");
		System.out.println(file2);
	}
}
/*
输出结果:
D:\MyJavaCode\1.txt
D:\MyJavaCode\2.txt
D:\MyJavaCode\3.txt
*/

3.创建文件或者文件夹

boolean createNewFile();
	通过File类对象调用,创建File类对象中对应地址的普通文件,创建成功返回true,创建失败返回false;
	失败原因:
		1.路径不合法,路径不存在,路径错误
		2.对应文件夹没有写入权限
		3.对应文件已存在
		4.磁盘坏道,电脑蓝屏

boolean mkdir();
	通过File类对象创建,创建File类对象中对应的文件夹,创建成功返回true,失败返回false
	失败原因:
		1.路径不合法,路径不存在,路径错误
		2.对应文件夹没有写入权限
		3.对应文件夹已存在
		4.磁盘坏道,电脑蓝屏
		
boolean mkdirs();
	创建文件夹过程中可以完成中间路径
	
boolean renameTo(File dest);
	通过File类对象调用,转为目标dest指定File类对象,可以操作普通文件,可以操作文件夹。移动,重命名
	
import java.io.File;
import java.io.IOException;

public class TestFileConstructor {
	public static void main(String[] args) throws IOException {
		
		//String pathName
		File file = new File("D:/MyJavaCode/1.txt");
		System.out.println(file);
		
		//String parent, String childName
		File file1 = new File("D:/MyJavaCode", "2");
		System.out.println(file1);
		
		//File parent, String childName
		File file2 = new File(new File("D:/MyJavaCode/"), "3.txt");
		System.out.println(file2);
		
		//创建文件
		System.out.println(file.createNewFile());
		System.out.println(file1.createNewFile());
		
		//创建文件夹
		System.out.println(file2.mkdir());
		
		File file3 = new File(new File("D:/MyJavaCode/a/d/d/v/c"), "3.txt");
		System.out.println(file3.mkdirs());
		
		File file4 = new File("D:/MyJavaCode/4");
		//System.out.println(file.renameTo(file4));
		System.out.println(file2.renameTo(file4));
		
	}
}

4.删除文件或者文件夹

boolean delete();
	通过File类对象调用,删除File类对象对应的文件或者文件夹
	注意:
		1. 从磁盘中直接抹除数据,慎用
		2.删除操作只针对于空文件夹使用,不能删除非空文件夹
		
void deleteOnExit();
	程序退出后,删除调用该方法File类对象对应的普通文件或者文件夹
	用于缓冲文件,缓存问题,日志文件

5.获取文件或者文件夹数据

String getPath();
	获取File类文件对象中保存的路径
String getName();
	获取File类对象操作对应的文件名或者文件夹名
String getParent();
	获取File类对象操作对应的文件或者文件夹的上级目录
String getAbsolutePath();
	获取File类对象的绝对路径

Long length();
	获取当前文件的占用磁盘字节数
	
Long lastModified();
	获取当前文件夹上一次修改时间的时间戳
public class TestFile {
	public static void main(String[] args) throws IOException {
		
		File file = new File("D:/MyJavaCode/4/1.txt");
		
		System.out.println(file.getPath());
		System.out.println(file.getParent());
		System.out.println(file.getName());
		
		System.out.println(file.length());
		System.out.println(file.lastModified());
	}
}

6.判断方法

boolean isFile();
	判断是否为为文件
boolean isDirectory();
	判断是否为文件夹
boolean exists();
	判断File类对象对应的内容是否存在
boolean isAbsolute();
	判断是否为绝对路径
boolean isHidden();
	判断是不是一个隐藏文件

7.文件列表方法

static File[] listRoots();
	获取Windows操作系统下所有盘符
	
String[] list();
	获取File类对象对应文件夹中所有子文件或者子文件夹名字
	
File[] listFiles();
	获取File类对象对应文件夹中所有子文件或者子文件夹的File类对象数组

8。FilenameFilter 文件名过滤器接口

boolean accept(File dir, String name);
dir是当前操作获取文件列表的文件夹File类对象
name是当前文件夹下的文件名或者文件夹名

例:
获取文件夹中所有的【.java】文件
package com.qfedu.study.file;

import java.io.File;
import java.io.FilenameFilter;

public class TestFilenameFilter {
	public static void main(String[] args) {
		
		File file = new File("D:/MyJavaCode/a");
		
		//用String数组获取file的所有子文件或子文件夹名字
		String[] list = file.list(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				return new File(dir, name).isFile() && name.endsWith(".java");
			}
		});
		
		for (String string : list) {
			System.out.println(string);
		}
		
		//用File数组获取
		File[] fileList = file.listFiles(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				return new File(dir, name).isFile() && name.endsWith(".java");
			}
		});
		
		for (File file2 : fileList) {
			System.out.println(file2);
		}
		
		
		//Lambda表达式
		File[] fileList1 = file.listFiles((dir, name) 
				-> new File(dir, name).isFile() && name.endsWith(".java"));
		
		for (File file2 : fileList1) {
			System.out.println(file2);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值