Java 递归 Recursion.
importjava.io.*;publicclassTest03{publicstaticvoidmain(String[]args){Filef=newFile("D...
import java.io.*;
public class Test03{
public static void main(String[] args){
File f = new File("D:/course");
method1(f);
}
public static void method1(File f){
if(f.isFile()){
return;
}
File[] fs = f.listFiles();
for(File subF : fs){
System.out.println(subF.getAbsolutePath());
method1(subF);
}
}
}
这段代码看不明白,希望大家帮帮我. 谢谢.
如果D:/course里面有ff.txt文件和一些文件夹. "subF"从"fs"读取一个数据. subF.getAbsolutePath() subF[0]应该是ff.txt的路径.
哪麼当他再call method1(subF);时 f.isFile() == true. 程序应该停了才对啊...
但它还能找出D:/course里面所有子目录和文件.
看懂的朋友可以详细解释运行过程吗?
看了你的回覆我有新理解,但不知道有没有理解错误
开始用main里面的 method1( f ) call method1( ) . 在stack第一层里面有一个method1( ).
因为第一层是用"File f = new File("e://courses");" call method1( ). 所以当 fs = f.listFiles(); 记录e://courses里面所有目录同文件. fs { d:/courses/ff.txt, d:/courses/test1, d:/courses/test2,}
当程序用 method1(fs[ 0 ] = d:/courses/ff.txt, ); call method1( ) 这时在stack第二层里面有一个新的method1( ) 因为call第二层method1( )是传送一个文件 d:/courses/ff.txt. 所以 f.isFile() = true. return. 但return的只是停止第二层的method1( ).
现在回到stack第一层. 第一层是用Method( f = e://courses ) call
第一层For Loop 继续执行, i++ i<fs.length method1(fs[ 1 ] = d:/courses/test1 )
这时在stack里Creat第3层Method1( );
第3层Method1( ) 用 method1(fs[ 1 ] = d:/courses/test1 ) call.
所以fs{ d:/courses/test1/dummy.txt }; 第3层 method1.( fs[ 0 ] ); f.isFile( ) = true. return.
但return的只是停止第3层的method1( ).
现在回到stack第一层....... 展开
public class Test03{
public static void main(String[] args){
File f = new File("D:/course");
method1(f);
}
public static void method1(File f){
if(f.isFile()){
return;
}
File[] fs = f.listFiles();
for(File subF : fs){
System.out.println(subF.getAbsolutePath());
method1(subF);
}
}
}
这段代码看不明白,希望大家帮帮我. 谢谢.
如果D:/course里面有ff.txt文件和一些文件夹. "subF"从"fs"读取一个数据. subF.getAbsolutePath() subF[0]应该是ff.txt的路径.
哪麼当他再call method1(subF);时 f.isFile() == true. 程序应该停了才对啊...
但它还能找出D:/course里面所有子目录和文件.
看懂的朋友可以详细解释运行过程吗?
看了你的回覆我有新理解,但不知道有没有理解错误
开始用main里面的 method1( f ) call method1( ) . 在stack第一层里面有一个method1( ).
因为第一层是用"File f = new File("e://courses");" call method1( ). 所以当 fs = f.listFiles(); 记录e://courses里面所有目录同文件. fs { d:/courses/ff.txt, d:/courses/test1, d:/courses/test2,}
当程序用 method1(fs[ 0 ] = d:/courses/ff.txt, ); call method1( ) 这时在stack第二层里面有一个新的method1( ) 因为call第二层method1( )是传送一个文件 d:/courses/ff.txt. 所以 f.isFile() = true. return. 但return的只是停止第二层的method1( ).
现在回到stack第一层. 第一层是用Method( f = e://courses ) call
第一层For Loop 继续执行, i++ i<fs.length method1(fs[ 1 ] = d:/courses/test1 )
这时在stack里Creat第3层Method1( );
第3层Method1( ) 用 method1(fs[ 1 ] = d:/courses/test1 ) call.
所以fs{ d:/courses/test1/dummy.txt }; 第3层 method1.( fs[ 0 ] ); f.isFile( ) = true. return.
但return的只是停止第3层的method1( ).
现在回到stack第一层....... 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询