使用Java按顺序遍历目录
我从我的经理那里收到一个压缩格式的包,下面的文件路径结构将在解压缩后出现。这些文件必须按特定顺序复制到数据库使用Java按顺序遍历目录,java,file,Java,File,我从我的经理那里收到一个压缩格式的包,下面的文件路径结构将在解压缩后出现。这些文件必须按特定顺序复制到数据库 --DDL -----abc.sql --Table -----def.sql --Function -----ghi.sql --Stored Procedure -----jkl.sql -----mno.sql 要求是必须首先应用文件夹DDL的内容,然后应用表,然后应用函数,最后应用存储过程 有时只有两个文件夹,如下所示 --Function ----abc.sql --Stor
--DDL
-----abc.sql
--Table
-----def.sql
--Function
-----ghi.sql
--Stored Procedure
-----jkl.sql
-----mno.sql
要求是必须首先应用文件夹DDL的内容,然后应用表,然后应用函数,最后应用存储过程
有时只有两个文件夹,如下所示
--Function
----abc.sql
--Stored Procedure
----jkl.sql
----mno.sql
在这种情况下,最后也必须应用存储过程。无论提取的文件中有哪些文件夹,都无法更改顺序
如何用Java实现这一点?我已经用Python轻松地实现了这一点
注意:在这种情况下,考虑到每个目录中都有子目录和多个文件,是否可以混合使用filevisitor界面?假设内容已经解压缩,我将以以下方式实现它:
Files.walk()
方法遍历整个目录final Path sourcePath = Paths.get("/tmp/extracted-sql-import-root/");
try (Stream<Path> walk = Files.walk(sourcePath)) {
walk.filter(isSqlFile)
.map(filePath -> new SqlFile(sourcePath, filePath))
.sorted()
.forEach(processSqlFile);
} catch (IOException iOException) {
// TODO handle exception
}
final Path sourcePath=Path.get(“/tmp/extracted sql import root/”;
try(streamwalk=Files.walk(sourcePath)){
walk.filter(isSqlFile)
.map(文件路径->新建SqlFile(源路径,文件路径))
.已排序()
.forEach(processSqlFile);
}捕获(IOException IOException){
//TODO句柄异常
}
我没有使用FileVisitor,因为我假设您无法影响文件的访问顺序,并且
然后它变成双簧管,因为你关心的顺序
链接到,我没有处理所有实际的边缘情况
从我遗漏了SQL部分的算法来看,我想您只对文件处理感兴趣。@Renatolvancic感谢您提供的代码片段:),但如何运行此程序?我建议您查看关于如何从命令行或IDE示例中运行java应用程序的其他答案: