java - 多文件读取循环和区分 .pdf 和 .doc 文件
问题描述
我在 Eclipse 中编写一个 Java 程序来扫描简历中的关键字并过滤其中最合适的简历,除了显示每个简历的关键字。简历可以是 doc/pdf 格式。
我已经成功实现了一个程序来分别读取 pdf 文件和 doc 文件(通过使用 Apache 的 PDFBox 和 POI jar 包并为所需方法导入库),显示关键字并根据找到的关键字数量显示简历强度。
现在有两个问题陷入困境:
(1) 我需要区分程序中的pdf
文件和doc
文件,这很容易通过 if 语句实现,但我很困惑如何编写代码来检测文件是否具有 .pdf 或 .doc 扩展名。(我打算建立一个应用程序来选择简历,但是程序必须决定它是实现doc
类型文件读取块还是pdf
类型文件读取块)
(2) 我打算为简历列表运行程序,为此我需要一个循环,在其中我将为每个简历运行关键字扫描操作,但我想不出办法,因为即使这些文件被命名为“resume1”、“resume2”等,我们不能在文件位置分配循环的可迭代变量,例如:'C:/Resumes_Folder/Resume[i]'
因为这就是路径。
任何帮助,将不胜感激!
解决方案
- 您可以使用 a
FileFilter
仅读取一种或另一种类型,然后做出相应的响应。它会给你一个List
只包含所需类型的文件。 - 第二个要求让我感到困惑。我认为通过创建一个封装你想要解析的数据和行为的类,你会得到很好的服务
Resume
。编写一个工厂类,该类接受InputStream
并生成Resume
包含您需要的数据的 a。
你犯了一个典型的错误:你把所有的逻辑都嵌入到一个 main 方法中。这将使您的代码更难测试。
所有的问题解决都包括将大问题分解成小问题,解决小问题,然后将它们组合起来最终解决大问题。
我建议你把这个问题分解成更小的类。例如,在您可以读取和解析单个 PDF 和 DOC 文件之前,不必担心遍历目录中的文件。
创建接口:
public interface ResumeParser {
Resume parse(InputStream is) throws IOException;
}
为 PDF 和 Word Doc 实现不同的实现。
ResumeParser
创建一个工厂以根据文件类型为您提供适当的:
public class ResumeParserFactory {
public ResumeParser create(String fileType) {
if (fileType.contains(".pdf") {
return new PdfResumeParser();
} else if (fileType.contains(".doc") {
return new WordResumeParser();
} else {
throw new IllegalArgumentException("Unknown document type: " + fileType);
}
}
}
一定要随时编写单元测试。您应该知道如何使用JUnit。
推荐阅读
- matlab - 如何使用计算方法近似曲线 C 的弧长?
- keycloak - 如何在 Keycloak 中禁用 SSO 功能
- excel - 如果满足条件,则计算唯一值
- wordpress - 如何使用 url 参数在 woocommerce 中使用和条件从两个类别中获取产品
- html - 带有 flexbox 和静态宽度的 CSS 侧边栏
- css - 即使重定向到另一个 html 文件,输入:焦点如何保持焦点?
- sql - 记录未显示结果
- c - C:加载'int'类型的空指针(__Serializer__.c),我的代码出错
- java - 如何使用 JLabel 和 Swing Timer 简要通知用户?
- python - 如何修复数据框没有属性图