Java语言,删除一个空文件夹:
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、网站建设、外贸营销网站建设、南昌网络推广、微信平台小程序开发、南昌网络营销、南昌企业策划、南昌品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供南昌建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
import java.io.File;
class DeleteDir {
public static void main(String args[]) {
deleteDirectory(new File(args[0]));
}
static public boolean deleteDirectory(File path) {
if( path.exists() ) { //判断是否为空
File[] files = path.listFiles();
for(int i=0; ifiles.length; i++) {//如果不为空不删除
if(files[i].isDirectory()) {
deleteDirectory(files[i]);
}
else {//执行删除
files[i].delete();
}
}
}
return( path.delete() );
}
}
1、如果只是想要文件中的内容,可以使用如下代码:
FileOutputStream fs = new FileOutputStream(new File("C:\\buyterms.txt"));
2、如果是想要文件夹中的内容,可以使用如下代码:
package com.xx;
import java.io.File;
public class Test {
public static void main(String[] args) {
String fileRoot = "C:/Users/xx/Desktop/xx/xxx";
delFolder(fileRoot);
System.out.println("deleted");
}
// // 删除完文件后删除文件夹
// // 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();
}
}
// 删除指定文件夹下所有文件
// param path 文件夹完整绝对路径
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;
}
}
FIle file = new File("/image/123.jpg");
if (file.exists()){
file.delete();
}
使用File对象操作删除,会判断是否存在,如存在就删了。
如果想找路径,使用File类的getAbsolutePath()方/法就能得到/绝/对/路/径/的字符串表示。
例如上面的对、象file,使用
String str = file.getAbsolutePath();
System.out.println(str);
你在/控/制/台co/ns/ole/窗口就能看到了。
在 Java 中,可以使用 File 类来删除文件夹及其中的文件。
首先,您可以使用 File 类的构造函数来创建一个 File 对象,该对象表示文件夹的路径,如下所示:
String folderName = "folder";
File folder = new File(folderName);
然后,您可以使用 delete() 方法来删除该文件夹。
但是,如果文件夹不为空,则 delete() 方法将无法删除文件夹,因此您还需要递归删除文件夹中的所有文件。
下面是一个示例代码,可以帮助您删除文件夹及其中的所有文件:
import java.io.File;
public class Main {
public static void main(String[] args) {
String folderName = "folder";
File folder = new File(folderName);
deleteFolder(folder);
}
public static void deleteFolder(File folder) {
File[] files = folder.listFiles();
if (files != null) {
for (File f: files) {
if (f.isDirectory()) {
deleteFolder(f);
} else {
f.delete();
}
}
}
folder.delete();
}
}
import java.io.File;
/**
* 删除文件和目录
*
*/
public class DeleteFileUtil {
/**
* 删除文件,可以是文件或文件夹
*
* @param fileName
* 要删除的文件名
* @return 删除成功返回true,否则返回false
*/
public static boolean delete(String fileName) {
File file = new File(fileName);
if (!file.exists()) {
System.out.println("删除文件失败:" + fileName + "不存在!");
return false;
} else {
if (file.isFile())
return deleteFile(fileName);
else
return deleteDirectory(fileName);
}
}
/**
* 删除单个文件
*
* @param fileName
* 要删除的文件的文件名
* @return 单个文件删除成功返回true,否则返回false
*/
public static boolean deleteFile(String fileName) {
File file = new File(fileName);
// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
if (file.exists() file.isFile()) {
if (file.delete()) {
System.out.println("删除单个文件" + fileName + "成功!");
return true;
} else {
System.out.println("删除单个文件" + fileName + "失败!");
return false;
}
} else {
System.out.println("删除单个文件失败:" + fileName + "不存在!");
return false;
}
}
/**
* 删除目录及目录下的文件
*
* @param dir
* 要删除的目录的文件路径
* @return 目录删除成功返回true,否则返回false
*/
public static boolean deleteDirectory(String dir) {
// 如果dir不以文件分隔符结尾,自动添加文件分隔符
if (!dir.endsWith(File.separator))
dir = dir + File.separator;
File dirFile = new File(dir);
// 如果dir对应的文件不存在,或者不是一个目录,则退出
if ((!dirFile.exists()) || (!dirFile.isDirectory())) {
System.out.println("删除目录失败:" + dir + "不存在!");
return false;
}
boolean flag = true;
// 删除文件夹中的所有文件包括子目录
File[] files = dirFile.listFiles();
for (int i = 0; i files.length; i++) {
// 删除子文件
if (files[i].isFile()) {
flag = DeleteFileUtil.deleteFile(files[i].getAbsolutePath());
if (!flag)
break;
}
// 删除子目录
else if (files[i].isDirectory()) {
flag = DeleteFileUtil.deleteDirectory(files[i]
.getAbsolutePath());
if (!flag)
break;
}
}
if (!flag) {
System.out.println("删除目录失败!");
return false;
}
// 删除当前目录
if (dirFile.delete()) {
System.out.println("删除目录" + dir + "成功!");
return true;
} else {
return false;
}
}
public static void main(String[] args) {
// // 删除单个文件
// String file = "c:/test/test.txt";
// DeleteFileUtil.deleteFile(file);
// System.out.println();
// 删除一个目录
String dir = "D:/home/web/upload/upload/files";
DeleteFileUtil.deleteDirectory(dir);
// System.out.println();
// // 删除文件
// dir = "c:/test/test0";
// DeleteFileUtil.delete(dir);
}
}
你程序中有个错误,并且逻辑有问题,代码修改了,如下:
public class Test2001 {
private static String s;
public static void main(String[] args) {
test1();// 删除文件
}
private static void test1() {
System.out.println("请输入你要删除的文件名");
s = new Scanner(System.in).next();
File file = new File("E:/");
deleteFile(file);
}
private static void deleteFile(File file) {
File Array[] = file.listFiles();
for (File f : Array) {
if (f.isFile()) {// 如果是文件
if (f.getName().equals(s)) {
f.delete();
System.out.println("删除文件成功");
return;
}
}
}
System.out.println("删除文件失败,该文件不存在");
}
} 1.错误
判断文件名是否相等:if(f.getName()==s)
字符串判断值是否相等使用equals方法,==是比较内存地址,所以你的for一直匹对不到相同文件
2.
逻辑错误
private static void deleteFile(File file) {
File Array[] = file.listFiles();
for (File f : Array) {
if (f.isFile()) {// 如果是文件
if (f.getName() == s) { // 这里已经在比较文件是否相等
f.delete();
System.out.println("删除文件成功");
break;
} else {// 如果不是要删除的文件,跳到下一次循环
continue;
}
} else {// 如果不是文件
deleteFile(file); // 这里
}
}
System.out.println("删除文件失败,该文件不存在");
}if
(f.isFile())
{//
如果是文件
}
}
else
{//
如果不是文件
deleteFile(file);
//
这里不需要再次deleteFile,只会迭代,按钮的逻辑,不是文件,就跳过,应该是continue
}
亲,如果回答满意,请即时采纳,你的理解是我回答的动力,谢谢!!!