JavaFile常见⽅法、File数组及⽂件的常见定时删除功能及递归删除功能File常见⽅法
使⽤⽅法 new File(“路径”)
File file =new File("D:/file/");
1.ists // 判断是否存在
2.f ile.isFile()// 判断是⽂件
mkdirs方法3.f ile.isDirectory()// 判断是⽂件夹
4.f ile.mkdir()//创建单个⽂件夹
5.f ile.mkdirs()//创建多个⽂件夹
6.ateNewFile()//创建新⽂件
7.Path()//获取⽂件路径
8.Name()//获取⽂件名
9.Parent()//获取⽗级路径名
10.ParentFile()//获取⽗级路径新⽂件
12.f ile.delete()// 删除该⽂件
13.f ile.list()//获取该路径下的所有⽂件或⽂件夹
14.f ile.listFiles()//获取当前路径下所有的⽂件
15.F ile.separator // 代表“/”,根据系统⾃动判断
过滤获取File数组⽂件
根据路径获取当前⽂件夹下的⽂件可能存在多个使⽤数组接受
File []file =delListFile("D:/file/")
private File[]delListFile(String path){
return new File(path).listFiles((File file)->
file.isFile()&&//判断是否为⽂件
&& Name().endsWith(".txt"));// 判断⽂件后缀
}
若⽂件路径不存在
if(!new File("D:/file/").exists()){
new File("D:/file/").mkdirs()// 创建多个
new File("D:/file/").mkdir()// 创建单个
}
若⽂件不存在,创建⽂件
1.判断⽂件是否存在
//不存在进⾏创建
if(!new File("D:/file/").exists()){
⽅法⼀(推荐)、:
new File("D:/file/").createNewFile();
⽅法⼆(若使⽤会⾃动创建):
FileOutputStream creatFile =new FileOutputStream(new File("D:/file/"));// 担⼼问题,需要创建线程需要关闭
creatFile.close();
}
根据时间定时删除File
需求:删除10分钟之前的⽂件
1具体是功能根据⾃⼰可以调整,这⾥将⽅法封装为了⽅法,可以之间搬过去–希望可以为你建房添⽡
//先创建时间
public static final Logger LOG = Logger(当前的class⽂件.class);
String path ="D:/file/"
SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Instance();
calendar.setTime(new Date( System.currentTimeMillis()));
calendar.add(Calendar.YEAR,0);//当前时间减去⼀年,即⼀年前的时间
calendar.add(Calendar.MONTH,0);//当前时间前去⼀个⽉,即⼀个⽉前的时间 ;
calendar.add(Calendar.DAY_OF_MONTH,0);
calendar.add(Calendar.HOUR,0);
calendar.add(Calendar.MINUTE,10);
calendar.add(Calendar.SECOND,0);
filterListFile(path ,dateFormat.Time()));// 此处是公⽤⽅法传⼊参数(路径String,定义好的时间)
2创建⽅法
private void filterListFile(String sendAddress, String format){//接收来的路径,⽇期
LOG.info("删除⽇期超时的⽂件");
File[] fileArray=delListFile(sendAddress);// 此处过滤想要的⽂件,⽅法见3
if(fileArray.length>0){
for(File file : fileArray){
String fileData =getCreationTime(file);// 此处可以获取创建的⽂件时间,返回string ⽇期,⽅法见4 int result=fileDatapareTo(format);//⼩<⼤(⽇期格式保持⼀致)
// ⽂件创建时间《=》定义时间
//若 result <0 说明⽂件创建时间《定义时间
//若 result = 0 说明两者相同
//若 result >0 说明⽂件创建时间》定义时间
if(result<0){
<();// 回收资源
boolean delete= file.delete();//条件为true 执⾏删除该⽂件
LOG.info("当前删除结果:{}",delete);
}
}
}
}
3获取所要的⽂件
private File[]delListFile(String path){
return new File(path).listFiles((File file)->
file.isFile()&&//判断是否为⽂件
&& Name().endsWith(".txt"));// 判断⽂件后缀
}
4获取⽂件的创建⽇期返回string
private String getCreationTime(File file){
BasicFileAttributes attr = null;
try{
Path path = Path();
attr = adAttributes(path, BasicFileAttributes.class);
}catch(IOException e){
e.printStackTrace();
}
// 创建时间
Instant instant = ationTime().toInstant();
String format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault()).format(instant);
return format;// 获取的时间格式需要与对⽐的保持⼀致
}
File⽂件的写⼊
为了速度可以使⽤stream流
File synFile =new File("D:/");
String start ="2020-08-08"
FileOutputStream fileOutputStream =new FileOutputStream(synFile,false);
//第⼆个参数,判断是否进⾏拼接,false:表⽰不拼接,每次写⼊会将原数据清空。
byte[] Bytes();// 获取字节
fileOutputStream.write(b);//写⼊传的数组是byte不是Byte
fileOutputStream.flush();//起到⾏刷新的功能
fileOutputStream.close();//写⼊完毕,关闭流
File⽂件的读取
为了速度可以使⽤stream流
File synFile =new File("D:/");
String time = null;
ists()){// 判断是否存在
//获取同步⽇期
FileInputStream fileInputStream =new FileInputStream(synFile);// 创建转换流 byte[] b =new byte[10*1024];//定义⼀次读取数量
while((ad(b))!=-1){//-1:⽂件⽆数据
time =new String(b).trim();
}
fileInputStream.close();//关闭流
}
递归删除⽂件
创建思路:创建⼀个⽅法和⼀个在该⽅法下的⼀个循环体
@Override
public void getDelTmpFile(){// 创建⽅法
// 执⾏删除操作
delAllFile(path);//循环体⾥⾯的参数可以在创建⽅法参数中传递下来
}
private void delAllFile(String path){//需要删除路径
File [] superFile =listFileDel(path);
for(int i=0;i<superFile.length;i++){
if(superFile[i].isDirectory()){// 是⽂件夹则递归获取
delAllFile(superFile[i].getAbsolutePath());// 递归循环
}else{
superFile[i].delete();//若是⽂件直接删除
}
}
new File(path).delete();// 不管是什么最终删除跟路径
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论