java遍歷所有文件夾
Ⅰ 如何用java遍歷一個網路目錄下的所有文件
java中可以通過遞歸的方式獲取指定路徑下的所有文件並將其放入List集合中。 假設指定路徑為path,目標集合為fileList,遍歷指定路徑下的所有文件,如果是目錄文件則遞歸調用
Ⅱ 在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 怎麼遍歷 文件夾下的 文件
A.不使用遞歸:
import java.io.File;
import java.util.LinkedList;
public class FileSystem {
public static void main(String[] args) {
long a = System.currentTimeMillis();
LinkedList list = new LinkedList();
File dir = new File("c:\\java\\");
File file[] = dir.listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
list.add(file[i]);
else
System.out.println(file[i].getAbsolutePath());
}
File tmp;
while (!list.isEmpty()) {
tmp = list.removeFirst();
if (tmp.isDirectory()) {
file = tmp.listFiles();
if (file == null)
continue;
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
list.add(file[i]);
else
System.out.println(file[i].getAbsolutePath());
}
} else {
System.out.println(tmp.getAbsolutePath());
}
}
System.out.println(System.currentTimeMillis() - a);
}
}
Ⅳ 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遍歷文件夾
主要應用遞歸演算法
/**
*
*/
package com.dianziermu.io;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* 遍歷文件夾及其下面的所有文件夾,遞歸
*
* @author 點子二木
* @date 2009-6-10
* @version 1.0
*/
@SuppressWarnings("unchecked")
public class FolderIO {
static List<File> gblFoldList = new ArrayList();
/**
* @param args
*/
public static void main(String[] args) {
String path = "c:\\Program Files";// 將要搜索目錄路徑
System.out.println("獲取"+path + "目錄下所有文件夾,正在載入......");
readFolder(path);
printFolder();
}
/**
* 獲取文件對象
*
* @param path
*/
private static void readFolder(String path) {
File dir = new File(path);// 建立代表Sub目錄的File對象,並得到它的一個引用
if (dir.exists()) {// 檢查目錄是否存在
File[] dirList = dir.listFiles();// 獲取該目錄下所有文件和文件夾
for (int index = 0; index < dirList.length; index++) {
if (dirList[index].isDirectory()) {// 如果是文件夾
// System.out.println(dirList[index]);
gblFoldList.add(dirList[index]);
readFolder(dirList[index].getPath());// 注意:此處遞歸
}
}
} else {
System.out.println("該文件夾不存在");
}
}
/**
* 列印文件夾對象
*/
private static void printFolder() {
for (int index = 0; index < gblFoldList.size(); index++) {
System.out.println(gblFoldList.get(index));
}
}
}
Ⅵ java 怎麼遍歷 文件夾下的 文件
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class Traverse {
/** List游標 */
private static Integer sign = 0;
/** 初始路徑 */
private static String initPath = "E:\\";
/** 文件夾路徑 */
public static List<String> filePath = new ArrayList<String>();
public static void main(String[] args) {
/** 開始遍歷節點 */
System.out.println("---star---");
filePath.add(initPath);// 將首目錄放入遍歷隊列
while (sign < filePath.size()) {
getFilePath();
sign++;
}
System.out.println("---end---");
}
/**
* <p>
* 獲取所有節點路徑
*
* @return void
*/
public static void getFilePath() {
try {
File file = new File(filePath.get(sign));
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
boolean isFile = false;
isFile = files[i].isFile();
if (!isFile) {
filePath.add(files[i].getAbsolutePath());
System.out.println(files[i].getAbsolutePath());
}
}
} catch (Exception e) {
}
}
}
這個是遍歷給定目錄下的所有子目錄,並存放在list中,如果你要遍歷文件就從list中逐個取目錄再遍歷判斷是不是文件就行了!
Ⅶ 用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());
}
}
}
}