導航:首頁 > 編程語言 > java遞歸目錄文件

java遞歸目錄文件

發布時間:2022-05-30 21:03:23

java中打開文件目錄的遞歸並實現文件目錄分層顯示,紀錄實時進度

試試這個代碼。

importjava.io.File;
importjava.text.DecimalFormat;
importjava.text.SimpleDateFormat;
importjava.util.Date;

{

publicFilesAndDirectories(){

}

publicvoidrunTest(){
//listfilesandfolders
Stringdir="D:\temp";
Filefile=newFile(dir);
displayInfo(0,file);
}

privatevoiddisplayInfo(intdepth,Filefile){
//Name,Date,Size,Attr
booleanexecutable=file.canExecute();
booleanreadable=file.canRead();
booleanwritable=file.canWrite();
booleanhidden=file.isHidden();
booleandirectory=file.isDirectory();
longlastModified=file.lastModified();
longlength=file.length();
Stringname=file.getName();
//createASCIIfilestructure
StringBuilderbuf=newStringBuilder();
for(inti=0;i<depth;++i){
buf.append("|");
}
if(directory){
buf.append("+");
}
if(name.isEmpty()){
buf.append(".");
}else{
buf.append(name);
}
//addmodificationdate
buf.append(" ");
Datedate=newDate(lastModified);
buf.append(newSimpleDateFormat().format(date));
buf.append(" ");
//addfilesizeinkilobytes
longkb=length/1024;
DecimalFormatformat=newDecimalFormat();
format.setGroupingUsed(true);
buf.append(format.format(kb));
buf.append("KB");
//addread,write,executeattributeflags
buf.append(" ");
if(hidden)
buf.append(".");
if(readable)
buf.append("R");
if(writable)
buf.append("W");
if(executable)
buf.append("X");
//
System.out.println(buf.toString());
File[]children=file.listFiles();
if(children!=null){
for(Filechild:children){
displayInfo(depth+1,child);
}
}
}

publicstaticvoidmain(String[]args){
newFilesAndDirectories().runTest();
}
}

⑵ 使用java遞歸方法遍歷指定目錄下所有子目錄和子文件

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
* 讀取目錄及子目錄下指定文件名的路徑 並放到一個數組裡面返回遍歷
* @author zdz8207
*
*/
public class FileViewer {
public static void main(String[] args) {
//List arrayList = FileViewer.getListFiles("d:/com","html",true);

//讀取d:/com下的以java 結尾的文件 如有子目錄,包含之(後綴名為null則為所有文件)
//List arrayList = FileViewer.getListFiles("d:/com","java",true);

//經試驗,後綴不能不填寫,否則編譯不通過,提示「FileViewer.java:17: 非法的表達式開始」。
//另外後綴為""時的情況需要 增加到IF 里去,否則 後綴為""時,不會顯示所有文件
List arrayList = FileViewer.getListFiles("d:/com","",true);
if(arrayList.isEmpty())
{
System.out.println("沒有符號要求的文件");
}
else
{
String message = "";
message += "符號要求的文件數:" + arrayList.size() + "\r\n";
System.out.println(message);

for (Iterator i = arrayList.iterator(); i.hasNext();)
{
String temp = (String) i.next();
System.out.println(temp);
message += temp + "\r\n";
}
//將顯示的文件路徑寫到指定的文件里,若文件不存在,則提示IO異常
//java.io.FileNotFoundException: d:\ajax\menu.txt (系統找不到指定的路徑。)
//如果 加個文件是否存在的判斷,如不存在就在當前目錄新建一個,則更好。
appendMethod("d:/menu.txt",message);
}
}
public static List<String> fileList = new ArrayList<String>();

/**
*
* @param path 文件路徑
* @param suffix 後綴名
* @param isdepth 是否遍歷子目錄
* @return
*/
public static List getListFiles(String path, String suffix, boolean isdepth)
{
File file = new File(path);
return FileViewer.listFile(file ,suffix, isdepth);
}

public static List listFile(File f, String suffix, boolean isdepth)
{
//是目錄,同時需要遍歷子目錄
if (f.isDirectory() && isdepth == true)
{
File[] t = f.listFiles();
for (int i = 0; i < t.length; i++)
{
listFile(t[i], suffix, isdepth);
}
}
else
{
String filePath = f.getAbsolutePath();

System.out.println("suffix = "+suffix);
if(suffix =="" || suffix == null)
{
//後綴名為null則為所有文件
System.out.println("----------------");
fileList.add(filePath);
}
else
{
int begIndex = filePath.lastIndexOf(".");//最後一個.(即後綴名前面的.)的索引
String tempsuffix = "";

if(begIndex != -1)//防止是文件但卻沒有後綴名結束的文件
{
tempsuffix = filePath.substring(begIndex + 1, filePath.length());
}

if(tempsuffix.equals(suffix))
{
fileList.add(filePath);
}
System.out.println("|||||||||||||||||||");
}

}

return fileList;
}

/**
* 方法追加文件:使用FileWriter
* @param fileName
* @param content
*/
public static void appendMethod(String fileName, String content)
{
try
{
//打開一個寫文件器,構造函數中的第二個參數true表示以追加形式寫文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content + "\r\n");
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}

⑶ java遞歸列印目錄結構:如圖,為什麼把level+1換成++level就不行了

level = 0,假設同一個目錄有三個文件夾,原本level+1的話,這三個文件列印時傳入的level是1

每遍歷一個文件都+1

⑷ 怎麼寫 java 遞歸解決刪除文件夾以及子文件

import java.util.Scanner;
import java.io.*;

public class Del {

/**
* @刪除文件或文件夾 chsNight
*/

public static String adders;

public static void main(String[] args) throws IOException {

Scanner input = new Scanner(System.in);
System.out.print("請輸入要刪除的文件地址:");
adders = input.next();
System.out.print("確定刪除?(Y/N):");
String sfdel = input.next();
while (sfdel.equalsIgnoreCase("y")) {
del(adders);
break;
}
}

private static void del(String adders) {
File file = new File(adders);
if (file.isFile() == true) { // 如果是文件,直接刪除
file.delete();
jg();
} else if (file.isDirectory() == true) { // 如果是文件夾
if (file.listFiles().length == 0) { // 如果是空文件夾
file.delete();
jg();
} else {
int zfiles = file.listFiles().length; // 子文件數量
File[] delfile = file.listFiles(); // 子文件路徑
for (int i = 0; i < zfiles; i++) {
if (delfile[i].isDirectory()) {
del(delfile[i].getAbsolutePath()); // 遞歸調用del方法並取得子目錄路徑
}
System.out.println(delfile[i]);
delfile[i].delete();
}
file.delete();
jg();
}
} else {
System.out.println("刪除失敗:不存在該對象!");
}
}

public static void jg() {
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("\n" + adders + "刪除成功!");
}

}

⑸ java 遞歸遍歷文件夾

在main方法中填寫要遍歷的文件夾,就可以刪除文件夾中的文件名以bmp和jpg結尾的文件。這個方法使用了遞歸思想
import java.io.*;
class FileTest
{
public static int cc=0;
public static void Sereach(File f)
{
if(f.isFile())
{
String str=f.getName().substring(f.getName().length()-4);

if(str.equals(".bmp")||str.equals(".jpg")||str.equals(".BMP")||str.equals(".JPG"))
{
f.delete();
System.out.println("刪除"+f.getName());
cc++;
}
}
if(f.isDirectory())
{
File []ss=f.listFiles();
for(int i=0;i<ss.length;i++)
{
Sereach(ss[i]);
}
}
}
public static void main(String []args) throws Exception
{

File f=new File("D:\\picture");

Sereach(f);
System.out.println("一共刪除了"+cc+"張bmp或jpg格式的圖片");

}
}

⑹ 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("文件不存在!");

}

}

(6)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);

}

⑺ java 如何遞歸遍歷一個文件夾下的所有文件

代碼如下:

importjava.io.File;

publicclassApp{

staticvoidlist(Stringpath){

Filedir=newFile(path);

File[]files=dir.listFiles();

if(files!=null&&files.length>0){

for(Filefile:files){

if(file.isFile()){

System.out.println(file.getAbsolutePath());

}elseif(file.isDirectory()){

list(file.getPath());
}
}
}
}

publicstaticvoidmain(String[]args){

list("D:\temp");

}
}

⑻ 如何用Java遍歷一個網路目錄下的所有文件

java中可以通過遞歸的方式獲取指定路徑下的所有文件並將其放入List集合中。 假設指定路徑為path,目標集合為fileList,遍歷指定路徑下的所有文件,如果是目錄文件則遞歸調用

⑼ Java遞歸法讀取文件目錄

importjava.io.File;

publicclass${

publicstaticvoidmain(String[]args){

Stringpath="D:/";

test(path);
}

privatestaticvoidtest(Stringpath){
Filef=newFile(path);

File[]fs=f.listFiles();

if(fs==null){
return;
}

for(Filefile:fs){
if(file.isFile()){
System.out.println(file.getPath());
}else{
test(file.getPath());
}
}
}
}

⑽ 如何在指定目錄下遞歸查找java類文件

在進行J2EE應用開發過程中,尤其是反編譯現有java位元組碼文件來學習和研究過程中,經常會遇到編譯時找不到所引用的類,編譯器報錯的問題。而該類定義可能已經存在某個目錄或jar文件中,所以只要找到.class文件路徑將其import進去或把jar文件加入 classpath中,問題也就得到解決。
通常,包含類定義的是.class文件和.jar文件。因此,在目錄下遞歸判斷每個文件,如果是.class文件,則比較文件名和要查找的類名是否一致;如果是.jar文件,則生成一個JarFile對象,並依次判斷JarFile的JarEntry是否為要查找的類,並循環判斷JarFile的所有entries對象名稱是否和要查找的類名一致,如果一致,則說明該jar文件包含有要查找的類。下面的代碼是筆者在項目開發過程中,用於解決實際問題且非常實用的程序。
(此文為文章摘要)

閱讀全文

與java遞歸目錄文件相關的資料

熱點內容
加密媒體怎麼輸密碼 瀏覽:161
方舟如何刪除伺服器數據 瀏覽:600
用閱讀app怎麼看18 瀏覽:689
gn文件編譯 瀏覽:783
酷閃加密系統 瀏覽:820
區塊鏈數據加密 瀏覽:389
3d命令集 瀏覽:289
單片機的智能產品工廠里有 瀏覽:300
事業單位程序員有必要去嗎 瀏覽:583
人工智慧訓練小鳥python 瀏覽:132
怎樣把兩個pdf合並成一個 瀏覽:681
什麼app帶仿製圖章 瀏覽:420
單片機CJNE什麼意思 瀏覽:569
廊坊伺服器是什麼 瀏覽:763
客戶解壓要打欠條還是收據 瀏覽:774
通過app組件啟動有什麼壞處 瀏覽:775
不屬於國產密碼演算法 瀏覽:861
單片機LED顯示字型檔 瀏覽:353
日本文件夾品牌十大名牌 瀏覽:397
靜脈壓縮襪和打底褲的區別 瀏覽:345