當前位置:首頁 » 文件管理 » java文件夾遍歷

java文件夾遍歷

發布時間: 2022-12-11 16:56:44

❶ 用java怎麼遍歷磁碟上的所有文件

首先,我們需要獲取磁碟中所有的盤符路徑:jdk6中一個方法搞定:

File[]roots=File.listRoots();

然後,通過每個路徑來進行向下遍歷,上代碼(手敲,各種小錯誤別怪我,看思路就好):

importjava.io.File;
/**
由於本人使用了junit,請自行添加main方法測試
*/
publicclassTest{

@org.junit.Test
publicvoidtestfiles(){

File[]roots=File.listRoots();
for(Filef:roots){
System.out.println(f.getAbsolutePath());
}
listFiles(roots);

}

publicvoidlistFiles(File[]files){

if(files==null||files.length==0)return;
for(Filef:files){
if(f.isDirectory()){
System.out.println(f.getAbsolutePath());
listFiles(f.listFiles());
}else{
System.out.println(" |"+f.getName());
}
}

}


}

❷ 在java中如何遍歷某個路徑下的所有文件夾和文件

首先,我們先來遍歷一下D盤根目錄下所有的子文件:public
static
void
fileList()
{
File
file=new
File("d:/");
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
System.out.println(f.getPath());
}
}
}對此,我們肯定不滿足,我們需要遍歷D盤下所有的文件和文件夾,而不是根目錄下的文件夾,這個時候我們需要使用到遞歸:public
static
void
fileList(File
file)
{
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
System.out.println(f.getPath());
fileList(f);
}
}
}然後在主函數中調用:public
static
void
main(String[]
args)
{
File
file=new
File("d:/");
fileList(file);
}結果是不是能令你滿意呢?顯然,輸出的都是全路徑,我們可以對我們的遞歸函數做如下改進:
public
static
void
fileList(File
file,int
node)
{
node++;
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
for(int
i=0;i<node;i++){
if(i==node-1){
System.out.print("├");
}
else{
System.out.print("
");
}
}
System.out.println(f.getName());
fileList(f,node);
}
}
}然後再次在主函數中調用:public
static
void
main(String[]
args)
{
File
file=new
File("d:/");
fileList(file,0);
}得到的結果是一個類似樹狀的結構,如果你對此還不滿意,可以嘗試給JTree上添加節點,可以做到和資源管理器中一樣的結構。

❸ java怎麼遍歷一個盤下的所有文件

用遞歸演算法,遞歸可以理解成自己調用自己,但要有終止條件

首先是判斷這個是文件還是文件夾。文件的話就處理文件;文件夾的話,列出裡面的文件,再對每一個文件做同樣的判斷處理

下面是刪除一個文件夾(改成列出所有文件的話,你把刪除操作改成放入集合操作),所有刪除都是只能刪除一個文件或者是空文件夾,所以遇到文件夾就得把裡面的文件全部刪除

	privatestaticvoiddeleteFile(Filefile){
if(!file.exists())
return;
System.out.print("刪除===");
if(file.isFile()){
System.out.println("文件:"+file);
file.delete();
}else{
System.out.println("文件夾:"+file);
for(Filef:file.listFiles()){
deleteFile(f);
}
file.delete();
}
}

同理(Node是自己定義的類,主要包含了name(String),children (List<Node>)這兩個屬性來表達層級):

遍歷了這個文件夾之後返回這個文件夾的Node作為上一個文件加的children之一,這就把文件夾的層級結構列出來了,當然你也可以用Map來存儲這些數據

/**
*列出文件目錄結構
*
*@paramfolder
*@paramfnf
*@return
*/
privatestaticNodelsFiles(Filefolder){
Noden=newNode();
n.setName(folder.getName());
n.setPath(folder.getAbsolutePath());
if(folder.isFile()){
n.setLeaf(true);
n.setSize(folder.length());
}else{
n.setLeaf(false);
File[]folders=folder.listFiles();//列出文件夾底下的文件
for(Filefile:folders){//遍歷每個文件做相同操作
Nodecn=lsFiles(file);
n.getChildren().add(cn);
n.setSize(n.getSize()+cn.getSize());
}
}

returnn;
}

下面是不分層次結構來列出所有文件(純手寫,可能有語法錯誤)

/**
*列出文件路徑
*
*@paramfolder
*@paramfnf
*@return
*/
privatestaticList<String>lsFiles(Filefolder){
List<String>l=newArrayList<String>();
l.add(folder.getAbsolutePath());
if(folder.isFile()){
//處理file
}else{
File[]folders=folder.listFiles();
for(Filefile:folders){
l.addAll(lsFiles(file));
}
}
returnl;
}

效果

❹ java怎麼實現遍歷文件夾並壓縮的功能

不考慮一個文件夾下有另外一個文件夾的情況下,代碼如下

publicstaticvoidZipFolder(Filedirectory)throwsException{
FileOutputStreamfout=newFileOutputStream("輸出壓縮文件test.zip的位置");
ZipOutputStreamzout=newZipOutputStream(fout);
for(Filefile:directory.listFiles()){
byte[]buffer=Files.readAllBytes(file.toPath());

ZipEntryzipEntry=newZipEntry(file.getName());
zout.putNextEntry(zipEntry);
zout.write(buffer);
zout.closeEntry();
}
zout.flush();
zout.close();
}

❺ java里如何遍歷一個文件夾獲取該文件夾里的所有文件名

一個文件里不但有文件還有文件夾所以代碼如下
先定義一個方法然後在main方法里調用
public void getFileName(File f){

if(f.isFile()){
System.out.println(f.getName());

}else{

List<File> l=f.listFile();
for(File file:l){
file.getFileName();
}

}

}

❻ java遍歷指定文件夾下的所有子文件夾怎麼操作

import java.io.File ;
import java.io.IOException ;
public class FileDemo11{
public static void main(String args[]){
File my = new File("d:" + File.separator) ;// 操作路徑,可以有外部參數決定的
print(my) ;
}
public static void print(File file){// 遞歸調用
if(file!=null){// 判斷對象是否為空
if(file.isDirectory()){// 如果是目錄
File f[] = file.listFiles() ;// 列出全部的文件
if(f!=null){// 判斷此目錄能否列出
for(int i=0;i<f.length;i++){
print(f[i]) ;// 因為給的路徑有可能是目錄,所以,繼續判斷
}
}
}else{
System.out.println(file) ;// 輸出路徑
}
}
}
};

❼ java遍歷文件夾下所有文件包括子目錄及文件放到json中後台代碼

import java.io.File;
import net.sf.json.JSON;
import net.sf.json.JSONObject;

public class fileTest {
public static void main(String[] args) throws Exception {

File file= new File("你文件夾的路徑");
showAllFiles(file);
}

final static void showAllFile(File dir) throws Exception{
File[] fs = dir.listFiles();
for(int i=0; i<fs.length; i++){
System.out.println(fs[i].getAbsolutePath());
if(fs[i].isDirectory()){
try{

JSON json2 = net.sf.json.JSONSerializer.toJSON(fs[i]);
json.element("item", json2);
showAllFile(fs[i]);
}catch(Exception e){}
}
}
}
}

這個是個簡單的遞歸解決的問題.如果有錯誤的地方.還望指出.如果前台要用到的話,用PrintWriter輸出到前台就可以拿到了。

望採納...

❽ JAVA 中在一個函數中遍歷文件夾裡面的所有文件,獲取他們的文件名,怎麼把這些文件名存到一個數組中。

你那個type沒看出有啥用,給你改了
import java.io.File;
import java.util.Vector;

public class A {
public static void recursion(String root, Vector<String> vecFile) {
File file = new File(root);
File[] subFile = file.listFiles();
for (int i = 0; i < subFile.length; i++) {
if (subFile[i].isDirectory()) {
recursion(subFile[i].getAbsolutePath(), vecFile);
} else {
String filename = subFile[i].getName();
vecFile.add(filename);
}
}
}

public static void main(String[] args) {
Vector<String> vecFile = new Vector<String>();
recursion("E:/A", vecFile);

for (String fileName : vecFile) {
System.out.println(fileName);
}
}
}
=================
文件名都給你打出來了,你還想咋處理????
=================
得不到,文件名只不過是一個字元串,沒有任何實際意義,除非得到文件名的時候得到文件大小。我給你改了下,Vector里放的是File而不是文件名了,你想幹啥都行了
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Vector;

public class A {
public static void recursion(String root, Vector<File> vecFile) {
File file = new File(root);
File[] subFile = file.listFiles();
for (int i = 0; i < subFile.length; i++) {
if (subFile[i].isDirectory()) {
recursion(subFile[i].getAbsolutePath(), vecFile);
} else {
vecFile.add(subFile[i]);
}
}
}

public static void main(String[] args) throws FileNotFoundException, IOException {
Vector<File> vecFile = new Vector<File>();
recursion("E:/A", vecFile);

for (File file : vecFile) {
System.out.println(file.getName() + " " + new FileInputStream(file).available());
}
}
}

❾ JAVA7如何遍歷一個目錄下的所有文件,如何知

1.遍歷本目錄下所有的文件(不包括目錄的目錄里的文件)
import java.io.File;public class main { public static void main(String[] args) { String path = "D:\\JAVA"; //要遍歷的路徑 File file = new File(path); //獲取其file對象 File[] fs = file.listFiles(); //遍歷path下的文件和目錄,放在File數組中 for(File f:fs){ //遍歷File[]數組 if(!f.isDirectory()) //若非目錄(即文件),則列印 System.out.println(f); } }}

運行結果:
列印出 D:/JAVA下的全部文件(包括D:/JAVA下的目錄下的文件)
1.遍歷本目錄下所有的文件(包括目錄的目錄里的文件)

import java.io.File;import java.io.FileFilter;public class FileText { public static void main(String[] args) { String path = "D:\\JAVA"; //要遍歷的路徑 File file = new File(path); //獲取其file對象 func(file); } private static void func(File file){ File[] fs = file.listFiles(); for(File f:fs){ if(f.isDirectory()) //若是目錄,則遞歸列印該目錄下的文件 func(f); if(f.isFile()) //若是文件,直接列印 System.out.println(f); } }}

列印結果:

列印所有文件

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

}

}

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

}

熱點內容
sqlifnotexists 發布:2025-08-02 02:02:14 瀏覽:127
如何製作伺服器的懸空標題字 發布:2025-08-02 01:57:49 瀏覽:843
唱吧上傳撤銷 發布:2025-08-02 01:48:11 瀏覽:693
區域網伺服器不能用ip訪問 發布:2025-08-02 01:47:20 瀏覽:540
c語言日誌 發布:2025-08-02 01:39:14 瀏覽:489
詳細編程 發布:2025-08-02 01:17:13 瀏覽:349
怎麼查看wifi的密碼 發布:2025-08-02 00:46:24 瀏覽:928
linux工具開發 發布:2025-08-02 00:44:52 瀏覽:688
c語言編程我愛你 發布:2025-08-02 00:40:12 瀏覽:946
車銑復合加工編程 發布:2025-08-02 00:39:21 瀏覽:49