【发布时间】:2013-03-03 01:28:53
【问题描述】:
我希望遍历多个文件,直到找到 .zip 文件或 .xml 文件
我的文件包含多个文件夹,每个文件夹的末尾都有 .zip 文件和 .xml 文件,而一些文件夹甚至可能没有
以下是我的代码:
package Traversefile;
import java.io.File;
public class traversefile {
/**
* @param args
*/
static String[] str1;
static File dir = new File("/home/evangelist/newdata");
private static void traverse(File dir) throws NullPointerException{
if (dir.isDirectory())
{
String[] children = dir.list();
for (int i=0; i<children.length; i++)
{
traverse(new File(dir, children[i]));
}
}
if (dir.isFile())
{
str1 = dir.list();
}
for (int i=0; i<str1.length; i++)
{
System.out.println("filename:"+ str1[i]);
}
}
public static void main(String[] args) {
traverse(dir);
// TODO Auto-generated method stub
}
}
我为检查遍历所做的更改: 包遍历文件;
导入 java.io.File;
公共类遍历文件{
/**
* @param args
*/
static String[] str1;
//static String homePath = System.getProperty("user.home");
static File dir = new File("/home/evangelist/newdata/nnc2/pairtree_root/ar/k+/=1/39/60/=t");
static int counter = 0;
static int kounter = 0;
static int krounter = 0;
private static void traverse(File dir) throws NullPointerException{
if(dir.isDirectory())
{
counter ++;
String[] children = dir.list();
//System.out.println(children);
for (int i=0; children != null && i<children.length; i++)
{
//System.out.println(children[i]);
//System.out.println(" yo + "+ counter );
traverse(new File(dir,children[i]));
}
}
if (dir.isFile())
{
krounter++;
if (dir.getName().endsWith(".xml")) //dir.getName().endsWith(".zip") ||
{
System.out.println(dir.getAbsolutePath());
//System.out.println(krounter);
}
}
}
public static void main(String[] args) {
traverse(dir);
// TODO Auto-generated method stub
}
}
它在第 27 行和第 19 行给了我一个空点异常..
如何遍历 n 个文件夹,最后当我找到 .zip znd .xml 文件时复制它们的位置
任何帮助将不胜感激
【问题讨论】:
-
第 27 行和第 19 行是什么?
-
traverse(new File(dir, children[i]) -- 19 and for (int i=0; i
-
dir.list() 可能会返回 null 检查 javadoc docs.oracle.com/javase/6/docs/api/java/io/File.html#list() ....
if (dir.isFile())和str1 = dir.list();是一个错误的组合,你不能列出一个文件,你只能列出一个目录。 .. 和str1总是被分配一个null
标签: java file file-io traversal