我试图以递归方式输出目录中的文件列表(不包括我开始使用的目录名称的名称(只是它的内容以及之后在树中递归的所有文件)
这是我现在所拥有的。它可能在这里和那里有错误,但想法是它将以递归方式打印树中每个文件的所有名称。我的问题是我不希望它打印出他们所居住的目录的名称。
我认为我的问题是我在递归方法的开头使用System.out.println,这意味着它每次都被使用。对于第一个目录下面的每个目录,这是理想的行为。这是一个烦人的小问题,我可以使用一些帮助。提前谢谢。
public static void listFiles(String path)
{
File basedir = new File(path);
System.out.println(path.getName());
try
{
File[] files = basedir.listFiles();
for (File file : files)
{
// If Dealing with a directory, call recursively to the function
if (file.isDirectory())
{
listFiles(file.getPath());
}
else
{
System.out.println(file.getName());
}
}
}
catch(IOException ex)
{
System.out.println(ex);
}
}
答案 0 :(得分:0)
public static void listFiles(String path, boolean firstCall)
{
File basedir = new File(path);
if(!firstCall)
{
System.out.println(path.getName());
}
try
{
File[] files = basedir.listFiles();
for (File file : files)
{
// If Dealing with a directory, call recursively to the function
if (file.isDirectory())
{
listFiles(file.getPath(), false); //false here because it is not the first call
}
else
{
System.out.println(file.getName());
}
}
}
catch(IOException ex)
{
System.out.println(ex);
}
}
添加一个布尔参数,指定它是否是第一个调用。当您调用方法时,将true传递给参数。另外path.getName()
无效字符串没有函数getName()也许你的意思是basedir.getName()
...也删除了try catch块IOException不能在那里出现。