gpt4 book ai didi

Java I/O 对路径中的每个文件进行操作

转载 作者:行者123 更新时间:2023-12-01 19:06:16 24 4
gpt4 key购买 nike

我有一个 HTML 帮助系统,需要将其转换为 SharePoint。两个最耗时的项目是更改文档链接和收集元数据。然而,我很幸运,因为这些数据很容易访问。每个文件都是一个 HTML 文档,简化如下:

 <body>
<!--- Metadata follows
Procedure Name: my document
Procedure Number: xxxxx
Use: freeform text explaining when procdure is used
Revision Date: xx/xx/xx
By: responsible party for revision
<!--- end metadata

<h1>Procedure Name<\h1>
<p>procedure background and narrative, with links, as needed, to other documents at \\documentation-server\path\document-name.html
<\body>

我可以成功提取和操作正确的字符串,并且我正在尝试将该过程合并到自动化解决方案中。然而,由于这是我第一次尝试文件 I/O,所以我对下一步该做什么有点模糊。

在一个完美的世界中,给定一个路径,我想单步执行路径中的每个 *.html 文件。我似乎找不到一个类/方法来做到这一点。 newInputStreamnewOutpuStream 为我提供文件访问权限,但我需要提供路径和文件参数。 FileVisitor 接口(interface)似乎仅与文件属性交互并执行删除/复制/重命名类型功能。

是否有一种东西可以将这些组合成一个函数,该函数将逐步遍历路径中的每个文件,打开它并允许我逐行解析,然后关闭文件并移至下一个文件以重复?

我的另一个想法是创建一个文件名数组,然后将该数组提供给 newInputStream 的文件名参数。

建议?

最佳答案

如果您使用 Java 7,FileVisitor 接口(interface)使您能够非常轻松地遍历文件树。例如,参见Java Tutorial .

您可以重写 visitFile 方法来对文件执行您想要的操作,例如(未测试):

@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attr) {
if (attr.isRegularFile() && file.getFileName().toString().endsWith(".html")) {
Charset charset = Charset.forName("UTF-16");
try (BufferedReader reader = Files.newBufferedReader(file, charset)) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line); //do what you need to do here
}
} catch (IOException x) {
//Print / log the errror
}
}
return CONTINUE;
}

关于Java I/O 对路径中的每个文件进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9976008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com