运用Java遍历文件夹的方法总结
2009-06-13 15:09
477 查看
一般遍历文件效率较高的都是采用递归算法执行的,下面的是简单的递归调用实现文件遍历:
package com.Interator;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class InteratorFile {
private static List list=new ArrayList();
public static void main(String[] args) {
// TODO Auto-generated method stub
InteratorFile iFile=new InteratorFile();
File file=new File("E://war3");
iFile.findFile(file,0);
}
public void findFile(File file,int j){//传参数j的目的主要是体现文件的层次。
File[] files=file.listFiles();
if(files==null){
return;
}
else{
for (int i=0;i<files.length;i++){
if(files[i].isDirectory()){
findFile(files[i].getAbsoluteFile(),j++);
}
else{
String path=files[i].getAbsolutePath();
for(int k=0;k<j;k++){
System.out.print("+");
}
System.out.println(path);
list.add(files[i].getAbsolutePath());
}
}
}
}
}
一部分运行结果:
E:/war3/Warcraft III/amai_2.45b/AMAI Debug Version.exe
E:/war3/Warcraft III/amai_2.45b/AMAI vs AI.exe
E:/war3/Warcraft III/amai_2.45b/AMAI_TFT.exe
+E:/war3/Warcraft III/blizzard.ax
+E:/war3/Warcraft III/bncache.dat
+E:/war3/Warcraft III/BNUpdate.exe
+E:/war3/Warcraft III/bnupdate.log
+E:/war3/Warcraft III/Campaigns/DemoCampaign.w3n
++E:/war3/Warcraft III/CustomKeyInfo.txt
++E:/war3/Warcraft III/CustomKeysSample.txt
另一种就是不用递归算法,这种方式经测试要低于递归算法,实现如下:
package com.text3;
import java.io.File;
import java.util.LinkedList;
public class findFile {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList list=new LinkedList();
File file=new File("E://war3");
File [] files=file.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
list.add(files[i]);
}
else{
System.out.println(files[i].getAbsolutePath());
}
}
File temp;
while(!list.isEmpty()){
temp=(File)list.removeFirst();
int j=0;
if(temp.isDirectory()){
files=temp.listFiles();
if(files!=null){
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
list.add(files[i]);
j++;
}
else{
for(int k=0;k<j;k++){
System.out.print("+");
}
System.out.println(files[i].getAbsolutePath());
}
}
}
else{
continue;
}
}
else{
System.out.println(temp.getAbsolutePath());
}
}
}
}
一部分运行结果:
+E:/war3/Warcraft III/bncache.dat
+E:/war3/Warcraft III/BNUpdate.exe
+E:/war3/Warcraft III/bnupdate.log
++E:/war3/Warcraft III/CustomKeyInfo.txt
++E:/war3/Warcraft III/CustomKeysSample.txt
++++E:/war3/Warcraft III/Frozen Throne.exe
++++E:/war3/Warcraft III/Game.dll
++++E:/war3/Warcraft III/ijl15.dll
++++E:/war3/Warcraft III/INSTALL.LOG
+++++++E:/war3/Warcraft III/Mss32.dll
+++++++++E:/war3/Warcraft III/replays.ico
package com.Interator;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class InteratorFile {
private static List list=new ArrayList();
public static void main(String[] args) {
// TODO Auto-generated method stub
InteratorFile iFile=new InteratorFile();
File file=new File("E://war3");
iFile.findFile(file,0);
}
public void findFile(File file,int j){//传参数j的目的主要是体现文件的层次。
File[] files=file.listFiles();
if(files==null){
return;
}
else{
for (int i=0;i<files.length;i++){
if(files[i].isDirectory()){
findFile(files[i].getAbsoluteFile(),j++);
}
else{
String path=files[i].getAbsolutePath();
for(int k=0;k<j;k++){
System.out.print("+");
}
System.out.println(path);
list.add(files[i].getAbsolutePath());
}
}
}
}
}
一部分运行结果:
E:/war3/Warcraft III/amai_2.45b/AMAI Debug Version.exe
E:/war3/Warcraft III/amai_2.45b/AMAI vs AI.exe
E:/war3/Warcraft III/amai_2.45b/AMAI_TFT.exe
+E:/war3/Warcraft III/blizzard.ax
+E:/war3/Warcraft III/bncache.dat
+E:/war3/Warcraft III/BNUpdate.exe
+E:/war3/Warcraft III/bnupdate.log
+E:/war3/Warcraft III/Campaigns/DemoCampaign.w3n
++E:/war3/Warcraft III/CustomKeyInfo.txt
++E:/war3/Warcraft III/CustomKeysSample.txt
另一种就是不用递归算法,这种方式经测试要低于递归算法,实现如下:
package com.text3;
import java.io.File;
import java.util.LinkedList;
public class findFile {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList list=new LinkedList();
File file=new File("E://war3");
File [] files=file.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
list.add(files[i]);
}
else{
System.out.println(files[i].getAbsolutePath());
}
}
File temp;
while(!list.isEmpty()){
temp=(File)list.removeFirst();
int j=0;
if(temp.isDirectory()){
files=temp.listFiles();
if(files!=null){
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
list.add(files[i]);
j++;
}
else{
for(int k=0;k<j;k++){
System.out.print("+");
}
System.out.println(files[i].getAbsolutePath());
}
}
}
else{
continue;
}
}
else{
System.out.println(temp.getAbsolutePath());
}
}
}
}
一部分运行结果:
+E:/war3/Warcraft III/bncache.dat
+E:/war3/Warcraft III/BNUpdate.exe
+E:/war3/Warcraft III/bnupdate.log
++E:/war3/Warcraft III/CustomKeyInfo.txt
++E:/war3/Warcraft III/CustomKeysSample.txt
++++E:/war3/Warcraft III/Frozen Throne.exe
++++E:/war3/Warcraft III/Game.dll
++++E:/war3/Warcraft III/ijl15.dll
++++E:/war3/Warcraft III/INSTALL.LOG
+++++++E:/war3/Warcraft III/Mss32.dll
+++++++++E:/war3/Warcraft III/replays.ico
相关文章推荐
- 运用Java遍历文件夹的方法
- 总结一下java遍历文件夹的方法!
- Java中Map常用方法总结以及遍历方式的汇总
- java map的遍历方法总结
- JAVA 嵌套目录遍历方法 遍历文件夹 嵌套遍历方法
- 这里总结了在Java中遍历Map的value值的三种方法,思路各不相同。
- Java中解锁数组正确姿势以及赋值,foreach遍历?,Java自带的对数组排序,比较等等的静态方法总结
- 使用JDK1.7 java.nio.file.Files.walkFileTree方法遍历文件夹下的文件
- java中List、Set、Map、Properties集合的遍历方法总结
- Java中使用遍历文件夹的2种方法
- Java 遍历文件夹的2种方法
- Java集合之List遍历找到匹配元素删除方法总结
- java中遍历文件夹的两种方法
- Java遍历文件夹的两种方法(非递归和递归) .
- Java遍历文件夹的2种方法:
- java遍历文件夹的两种方法
- Java中遍历Map的几种方法总结
- java中遍历Map常用方法 及优缺点总结
- Java中遍历文件夹的2种方法
- java中遍历Map集合的集中方法总结