java文件遞歸刪除文件夾
A. java怎麼實現掃描多個目錄中(包括子目錄)的指定文件,並且刪除它們
思路如下使用遞歸
public static void de(File f)
{ File [] b = f.listFiles();
//獲取包含file對象對應的子目錄或者文件
for(int i =0;i<b.length;i++}{
if(b[i].isFile()){
b[i].delete(); //判斷是否為文件如果是 就刪除 }
else{ de(b[i]);//否則重新遞歸到方法中 }
} f.delete();//最後刪除該目錄中所有文件後就刪除該目錄 }
B. java 中的file中怎麼刪除全部文件夾
可參考如下代碼,代碼說明寫代碼後注釋上
示例代碼如下:
importjava.io.File;
publicclassTest
{
publicstaticvoidmain(Stringargs[]){
Testt=newTest();
delFolder("c:/bb");
System.out.println("deleted");
}
//刪除文件夾
//paramfolderPath文件夾完整絕對路徑
publicstaticvoiddelFolder(StringfolderPath){
try{
delAllFile(folderPath);//刪除完裡面所有內容
StringfilePath=folderPath;
filePath=filePath.toString();
java.io.FilemyFilePath=newjava.io.File(filePath);
myFilePath.delete();//刪除空文件夾
}catch(Exceptione){
e.printStackTrace();
}
}
//刪除指定文件夾下所有文件
//parampath文件夾完整絕對路徑
publicstaticbooleandelAllFile(Stringpath){
booleanflag=false;
Filefile=newFile(path);
if(!file.exists()){
returnflag;
}
if(!file.isDirectory()){
returnflag;
}
String[]tempList=file.list();
Filetemp=null;
for(inti=0;i<tempList.length;i++){
if(path.endsWith(File.separator)){
temp=newFile(path+tempList[i]);
}else{
temp=newFile(path+File.separator+tempList[i]);
}
if(temp.isFile()){
temp.delete();
}
if(temp.isDirectory()){
delAllFile(path+"/"+tempList[i]);//先刪除文件夾裡面的文件
delFolder(path+"/"+tempList[i]);//再刪除空文件夾
flag=true;
}
}
returnflag;
}
}
C. JAVA遍歷一個文件夾中的所有文件---(遞歸)
public void traverseFolder2(String path) {
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (null == files || files.length == 0) {
System.out.println("文件夾是空的!");
return;
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夾:" + file2.getAbsolutePath());
traverseFolder2(file2.getAbsolutePath());
} else {
System.out.println("文件:" + file2.getAbsolutePath());
}
}
}
} else {
System.out.println("文件不存在!");
}
}
(3)java文件遞歸刪除文件夾擴展閱讀
public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedList<File> list = new LinkedList<File>();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夾:" + file2.getAbsolutePath());
list.add(file2);
foldeNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
File temp_file;
while (!list.isEmpty()) {
temp_file = list.removeFirst();
files = temp_file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夾:" + file2.getAbsolutePath());
list.add(file2);
folderNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夾共有:" + folderNum + ",文件共有:" + fileNum);
}
D. java編程: 給定路徑,遞歸刪除不包含文件的文件夾
importjava.io.File;
publicclass${
publicstaticvoidmain(String[]args){
Stringpath="D:/test";
Filef=newFile(path);
remove(f);
}
privatestaticvoidremove(Filef){
if(!f.isDirectory()){
return;
}
File[]fs=f.listFiles();
if(fs.length==0){
f.delete();
return;
}
for(Filefile:fs){
remove(file);
}
if(f.listFiles().length==0){
f.delete();
}
}
}
E. java我刪除一個文件的時候如果文件刪除成功了,還需要判斷該文件所在的文件夾是否為空如果為空的話也要刪
// 正向遞歸刪除路徑下的文件
public void delFile(String path){
File file = new File(path);
if(file.exists()&&file.isFile()){
file.delete();
}else if(file.exists()&&file.isDirectory()){
File[] files = file.listFiles();
if(files!=null){
for(File f:files){
if(f!=null){
delFile(f.getAbsolutePath());
}
}
}
}
}
// 逆向遞歸刪除空目錄
public void delEmptyPath(String path){
File file = new File(path);
if(file.exists()&&file.isDirectory()){
File[] files = file.listFiles();
if(files!=null&&files.length>0)
return;
if(file.delete()){
delEmptyPath(file.getParent());
}
}
}
// 把上面兩個方法先後調用就能達到你的目的
public void delDirectories(String path){
File file = new File(path);
delFile(file.getAbsolutePath());
delEmptyPath(file.getParent());
}
F. 用java復制多級文件夾下的文件,只要文件不要文件夾。
在Java中,我們需要遞歸地遍歷多級文件夾下的文件。首先,創建一個File對象指向目標文件夾,例如"d:/A/」。然後定義一個方法ergodic,接收File對象和一個列表作為參數。此方法首先檢查當前目錄下的文件數組是否為空,如果為空則直接返回結果列表。
接著,遍歷當前目錄下的所有文件或子目錄。如果遇到的是目錄,則調用自身方法ergodic繼續遞歸查找子目錄。若遇到的是文件,則將文件的路徑添加到結果列表中。最後返回結果列表。
通過這種方法,你可以獲取到所有文件的路徑,這些路徑存儲在List中。如果你想直接將這些文件復制到另一個目錄,只需稍作修改。具體而言,將判斷條件改為文件時,使用流將文件內容寫入新目錄即可。
例如,你可以使用FileInputStream讀取文件內容,並使用FileOutputStream將內容寫入新目錄中的同名文件。這樣,你就能將指定文件夾下的所有文件復制到另一個目錄,而無需復制文件夾本身。
這種方法適用於處理復雜的文件結構,只需遞歸遍歷並處理每個文件即可。當然,你需要確保目標目錄存在,並有足夠的寫入許可權,否則可能會遇到異常。