Java語言,刪除一個(gè)空文件夾:
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、南昌網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、南昌網(wǎng)絡(luò)營銷、南昌企業(yè)策劃、南昌品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供南昌建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址: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?{//執(zhí)行刪除??
files[i].delete();??
}??
}??
}??
return(?path.delete()?);??
}??
}
1、如果只是想要文件中的內(nèi)容,可以使用如下代碼:
FileOutputStream?fs?=?new?FileOutputStream(new?File("C:\\buyterms.txt"));
2、如果是想要文件夾中的內(nèi)容,可以使用如下代碼:
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);?//?刪除完里面所有內(nèi)容??
//不想刪除文佳夾隱藏下面??
//??????????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 類的構(gòu)造函數(shù)來創(chuàng)建一個(gè) File 對象,該對象表示文件夾的路徑,如下所示:
String folderName = "folder";
File folder = new File(folderName);
然后,您可以使用 delete() 方法來刪除該文件夾。
但是,如果文件夾不為空,則 delete() 方法將無法刪除文件夾,因此您還需要遞歸刪除文件夾中的所有文件。
下面是一個(gè)示例代碼,可以幫助您刪除文件夾及其中的所有文件:
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);
}
}
/**
* 刪除單個(gè)文件
*
* @param fileName
* 要刪除的文件的文件名
* @return 單個(gè)文件刪除成功返回true,否則返回false
*/
public static boolean deleteFile(String fileName) {
File file = new File(fileName);
// 如果文件路徑所對應(yīng)的文件存在,并且是一個(gè)文件,則直接刪除
if (file.exists() file.isFile()) {
if (file.delete()) {
System.out.println("刪除單個(gè)文件" + fileName + "成功!");
return true;
} else {
System.out.println("刪除單個(gè)文件" + fileName + "失??!");
return false;
}
} else {
System.out.println("刪除單個(gè)文件失敗:" + fileName + "不存在!");
return false;
}
}
/**
* 刪除目錄及目錄下的文件
*
* @param dir
* 要刪除的目錄的文件路徑
* @return 目錄刪除成功返回true,否則返回false
*/
public static boolean deleteDirectory(String dir) {
// 如果dir不以文件分隔符結(jié)尾,自動添加文件分隔符
if (!dir.endsWith(File.separator))
dir = dir + File.separator;
File dirFile = new File(dir);
// 如果dir對應(yīng)的文件不存在,或者不是一個(gè)目錄,則退出
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;
}
// 刪除當(dāng)前目錄
if (dirFile.delete()) {
System.out.println("刪除目錄" + dir + "成功!");
return true;
} else {
return false;
}
}
public static void main(String[] args) {
// // 刪除單個(gè)文件
// String file = "c:/test/test.txt";
// DeleteFileUtil.deleteFile(file);
// System.out.println();
// 刪除一個(gè)目錄
String dir = "D:/home/web/upload/upload/files";
DeleteFileUtil.deleteDirectory(dir);
// System.out.println();
// // 刪除文件
// dir = "c:/test/test0";
// DeleteFileUtil.delete(dir);
}
}
你程序中有個(gè)錯(cuò)誤,并且邏輯有問題,代碼修改了,如下:
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.錯(cuò)誤
判斷文件名是否相等:if(f.getName()==s)
字符串判斷值是否相等使用equals方法,==是比較內(nèi)存地址,所以你的for一直匹對不到相同文件
2.
邏輯錯(cuò)誤
private static void deleteFile(File file) {
File Array[] = file.listFiles();
for (File f : Array) {
if (f.isFile()) {// 如果是文件
if (f.getName() == s) { // 這里已經(jīng)在比較文件是否相等
f.delete();
System.out.println("刪除文件成功");
break;
} else {// 如果不是要刪除的文件,跳到下一次循環(huán)
continue;
}
} else {// 如果不是文件
deleteFile(file); // 這里
}
}
System.out.println("刪除文件失敗,該文件不存在");
}if
(f.isFile())
{//
如果是文件
}
}
else
{//
如果不是文件
deleteFile(file);
//
這里不需要再次deleteFile,只會迭代,按鈕的邏輯,不是文件,就跳過,應(yīng)該是continue
}
親,如果回答滿意,請即時(shí)采納,你的理解是我回答的動力,謝謝?。?!