我希望看到位于路径d:/ test文件夹下的所有文件的列表。但是,我只能直接在该文件夹下获取文件,但不能递归。 代码:
String folder = "D:/test";
Path path = fs.getPath(folder);
try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(path)) {
for (Path p : directoryStream) {
System.out.println(p.getFileName());
}
} catch (IOException e) {
e.printStackTrace();
}
结果:
a.txt
folder
答案 0 :(得分:3)
public function insertClick(){
$this->db->insert('click','id');
return $this->db->insert_id();
}
public function insertClickDetail($data=array()){
return $this->db->insert('click_detail',$data);
}
意味着表现得那样。如果您希望递归检索给定目录及其子目录中的所有目录和文件,则需要Files::newDirectoryStream
或Files::walk
。例如(我假设您使用Java 8):
Files::walkFileTree
答案 1 :(得分:3)
另一种扩展自己逻辑的方法:
public static void printFileNamesRecursively(String path){
Path yourPath = FileSystems.getDefault().getPath(path);
try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(yourPath)) {
for (Path p : directoryStream) {
System.out.println(p.getFileName());
if(p.toFile().isDirectory()){
printFileNamesRecursively(p.toString());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
答案 2 :(得分:1)
这是DirectoryStream的正确行为。相反,您可以使用 org.apache.commons.io.FileUtils 递归枚举文件。