第一次在这里提问,多多关照啊~~~
遍历某个目录下的所有文件(网上找的)package org.koala.util;
import java.util.ArrayList;
import java.io.File;
public class DirList {
private static ArrayList<String> fileList = new ArrayList<String>();
/**
* @param strPath 例如:dataLiterature\\book\\cnBook
* @return strPath目录下文件的ArrayList
*/
public ArrayList<String> traversal(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles();
if (files == null)
return null;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
traversal(files[i].getAbsolutePath());
} else {
//String strFileName = files[i].getAbsolutePath().toLowerCase();
//System.out.println("---" + strFileName);
fileList.add(files[i].getName());
}
}
return fileList;
}
}在另一个类里面调用这个函数DirList fp=new DirList();
DirList pp=new DirList();
ArrayList<String> filePath = fp.traversal("dataLiterature\\book\\cnBook");
ArrayList<String> piclst = pp.traversal(picLiterature\\book\\cnBook\\);运行出现错误,调试了一下,发现filePath和piclst里面的元素一样,这个是什么原因?
我创建了两个DirList对象,应该互不影响,但是怎么会出现这个情况?
补充说明:在做抓网页的一个程序,把网页数据和图片数据抓下来分别保存起来,然后放到库里。
遍历某个目录下的所有文件(网上找的)package org.koala.util;
import java.util.ArrayList;
import java.io.File;
public class DirList {
private static ArrayList<String> fileList = new ArrayList<String>();
/**
* @param strPath 例如:dataLiterature\\book\\cnBook
* @return strPath目录下文件的ArrayList
*/
public ArrayList<String> traversal(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles();
if (files == null)
return null;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
traversal(files[i].getAbsolutePath());
} else {
//String strFileName = files[i].getAbsolutePath().toLowerCase();
//System.out.println("---" + strFileName);
fileList.add(files[i].getName());
}
}
return fileList;
}
}在另一个类里面调用这个函数DirList fp=new DirList();
DirList pp=new DirList();
ArrayList<String> filePath = fp.traversal("dataLiterature\\book\\cnBook");
ArrayList<String> piclst = pp.traversal(picLiterature\\book\\cnBook\\);运行出现错误,调试了一下,发现filePath和piclst里面的元素一样,这个是什么原因?
我创建了两个DirList对象,应该互不影响,但是怎么会出现这个情况?
补充说明:在做抓网页的一个程序,把网页数据和图片数据抓下来分别保存起来,然后放到库里。
DirList fp=new DirList();
DirList pp=new DirList();
ArrayList<String> filePath = fp.traversal("dataLiterature\\book\\cnBook");
ArrayList<String> piclst = pp.traversal(picLiterature\\book\\cnBook);
DirList pp=new DirList();
肯定会影响咯i
这两个是一个意思!
都是实例化出来一个DirList 对象!
只是 对象名不一样而已1
其实是一样的!
当之你的域
private static ArrayList<String> fileList = new ArrayList<String>();
是静态的,属于类,不属于对象。所以还是一个对象。
------------
这两个是一个意思!
都是实例化出来一个DirList 对象!
只是 对象名不一样而已1
其实是一样的!
---------------------这2个对象是不同的对象,但是由于fileList这个属性是静态变量,这个类的所有对象都共享这一个属性
看看这个你就明白了
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
public class TestFile {
private static ArrayList<String> fileList = new ArrayList<String>();
/**
* @param strPath 例如:dataLiterature\\book\\cnBook
* @return strPath目录下文件的ArrayList
*/
public ArrayList<String> traversal(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles();
if (files == null)
return null;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
traversal(files[i].getAbsolutePath());
} else {
//String strFileName = files[i].getAbsolutePath().toLowerCase();
//System.out.println("---" + strFileName);
fileList.add(files[i].getName());
}
}
return fileList;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestFile fp=new TestFile();
TestFile pp=new TestFile();
ArrayList<String> filePath = fp.traversal("D:\\antTest");
Iterator it=filePath.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
ArrayList<String> filePath1 = fp.traversal("D:\\fas");
Iterator it1=filePath.iterator();
while(it1.hasNext()){
System.out.println(it1.next());
} }
}
import java.io.File;public class DirList {
private ArrayList<String> fileList = new ArrayList<String>();
public DirList(){
if(fileList!=null){
fileList.clear();
}
}
/**
* @param strPath
* @return strPath目录下文件的ArrayList
*/
public ArrayList<String> traversal(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
traversal(files[i].getAbsolutePath());
} else {
//String strFileName = files[i].getAbsolutePath().toLowerCase();
//System.out.println("---" + strFileName);
fileList.add(files[i].getName());
}
}
return fileList;
}
}