慎用!Java慎用函数之File.delete()

本文深入探讨Java中File类的delete()函数,演示如何使用该函数删除文件和目录,并附带源代码示例。小心操作,避免误删重要数据。

今天给大家介绍一个很好用的函数——java.io.File中的delete()函数

这个函数非常好用。好用到什么程度呢?

用这个函数删除文件删到你找到找不到……

而且还是秒删……压根儿反应不过来。

如果你特别恨一个人,请用File.delete()函数删除他的重要文件。

话不多说,上源码:

import java.io.File;

import java.util.Scanner;;


public class FileDelete {
	  
	    public static void main(String[] args) throws Exception {  
	    	String Filename;
	    	System.out.print("请输入您要删除的文件路径\n");
	    	Scanner reader = new Scanner(System.in);
	    	Filename=reader.next();
	    	System.out.println("正在删除"+Filename+"中……、\n");
	        delFolder(Filename);  
	    	System.out.print("删除完成!\n");
	    }  
	    /*** 
	     * 删除指定文件夹下所有文件 
	     *  
	     * @param path 文件夹完整绝对路径 
	     * @return 
	     */  
	    public static  boolean delAllFile(String path) {  
	        boolean flag = false;  
	        File file = new File(path);  
	        if (!file.exists()) {  
	            return flag;  
	        }  
	        if (!file.isDirectory()) {  
	            return flag;  
	        }  
	        String[] tempList = file.list();  
	        File temp = null;  
	        for (int i = 0; i < tempList.length; i++) {  
	            if (path.endsWith(File.separator)) {  
	                temp = new File(path + tempList[i]);  
	            } else {  
	                temp = new File(path + File.separator + tempList[i]);  
	            }  
	            if (temp.isFile()) {  
	                temp.delete();  
	            }  
	            if (temp.isDirectory()) {  
	                delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件  
	                delFolder(path + "/" + tempList[i]);// 再删除空文件夹  
	                flag = true;  
	            }  
	        }  
	        return flag;  
	    }  
	      
	    /*** 
	     * 删除文件夹 
	     *  
	     * @param folderPath文件夹完整绝对路径 
	     */  
	    public  static void delFolder(String folderPath) {  
	        try {  
	            delAllFile(folderPath); // 删除完里面所有内容  
	            String filePath = folderPath;  
	            filePath = filePath.toString();  
	            java.io.File myFilePath = new java.io.File(filePath);  
	            myFilePath.delete(); // 删除空文件夹  
	        } catch (Exception e) {  
	            e.printStackTrace();  
	        }
	        System.out.print("删除成功!\n");
	    }  

}

昨天写函数的时候,少写了一段地址名……整个文件夹都没了……

数据恢复了一天还没恢复好。已经不抱希望了……

晚安。

/* * Copyright (c) 2025, TP-Link. All rights reserved. */ package com.tplink.smb.common.data.management.system.modules.security.config; import com.tplink.smb.common.data.management.system.modules.security.security.JwtAccessDeniedHandler; import com.tplink.smb.common.data.management.system.modules.security.security.JwtAuthenticationEntryPoint; import com.tplink.smb.common.data.management.system.modules.security.security.TokenConfigurer; import com.tplink.smb.common.data.management.system.modules.security.security.TokenProvider; import com.tplink.smb.common.data.management.system.modules.security.service.OnlineUserService; import com.tplink.smb.common.data.management.system.utils.AnonTagUtils; import com.tplink.smb.common.data.management.system.utils.enums.RequestMethodEnum; import lombok.RequiredArgsConstructor; import com.tplink.smb.common.data.management.system.modules.security.security.*; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.core.GrantedAuthorityDefaults; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.web.filter.CorsFilter; import java.util.*; /** * @author Chen Jiayuan * @version 1.0 * @since 2025/9/30 */ @Configuration @RequiredArgsConstructor @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) public class SpringSecurityConfig { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; private final JwtAuthenticationEntryPoint authenticationErrorHandler; private final JwtAccessDeniedHandler jwtAccessDeniedHandler; private final ApplicationContext applicationContext; private final SecurityProperties properties; private final OnlineUserService onlineUserService; @Bean GrantedAuthorityDefaults grantedAuthorityDefaults() { // 去除 ROLE_ 前缀 return new GrantedAuthorityDefaults(""); } @Bean public PasswordEncoder passwordEncoder() { // 密码加密方式 return new BCryptPasswordEncoder(); } @Bean protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { // 获取匿名标记 Map<String, Set<String>> anonymousUrls = AnonTagUtils.getAnonymousUrl(applicationContext); return httpSecurity // 禁用 CSRF .csrf() .disable() .addFilter(corsFilter) // 授权异常 .exceptionHandling() .authenticationEntryPoint(authenticationErrorHandler) .accessDeniedHandler(jwtAccessDeniedHandler) // 防止iframe 造成跨域 .and() .headers() .frameOptions() .disable() // 不创建会话 .and() .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .authorizeRequests() // 静态资源等等 .antMatchers( HttpMethod.GET, "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/webSocket/**") .permitAll() // actuator .antMatchers("/actuator/**") .permitAll() // swagger 文档 .antMatchers("/swagger-ui.html") .permitAll() .antMatchers("/swagger-resources/**") .permitAll() .antMatchers("/webjars/**") .permitAll() .antMatchers("/*/api-docs") .permitAll() // 文件 .antMatchers("/avatar/**") .permitAll() .antMatchers("/file/**") .permitAll() // 阿里巴巴 druid .antMatchers("/druid/**") .permitAll() // 放行OPTIONS请求 .antMatchers(HttpMethod.OPTIONS, "/**") .permitAll() // 自定义匿名访问所有url放行:允许匿名和带Token访问,细腻化到每个 Request 类型 // GET .antMatchers( HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])) .permitAll() // POST .antMatchers( HttpMethod.POST, anonymousUrls.get(RequestMethodEnum.POST.getType()).toArray(new String[0])) .permitAll() // PUT .antMatchers( HttpMethod.PUT, anonymousUrls.get(RequestMethodEnum.PUT.getType()).toArray(new String[0])) .permitAll() // PATCH .antMatchers( HttpMethod.PATCH, anonymousUrls.get(RequestMethodEnum.PATCH.getType()).toArray(new String[0])) .permitAll() // DELETE .antMatchers( HttpMethod.DELETE, anonymousUrls.get(RequestMethodEnum.DELETE.getType()).toArray(new String[0])) .permitAll() // 所有类型的接口都放行 .antMatchers(anonymousUrls.get(RequestMethodEnum.ALL.getType()).toArray(new String[0])) .permitAll() // 所有请求都需要认证 .anyRequest() .authenticated() .and() .apply(securityConfigurerAdapter()) .and() .build(); } private TokenConfigurer securityConfigurerAdapter() { return new TokenConfigurer(tokenProvider, properties, onlineUserService); } }
最新发布
11-14
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值