我正在 Eclipse 中编写一个 Java 程序,除了显示每个简历的关键字之外,还可以扫描简历中的关键字并过滤其中最合适的简历。简历可以是doc/pdf格式。
我已经成功实现了一个程序,可以分别读取pdf文件和doc文件(通过使用Apache的PDFBox和POI jar包并导入所需方法的库),显示关键字并根据关键字数量显示简历强度成立。
现在有两个问题被困:
(1) 我需要区分程序中的 pdf
文件和 doc
文件,这可以通过 if 语句轻松实现,但我很困惑如何编写用于检测文件是否具有 .pdf 或 .doc 扩展名的代码。 (我打算构建一个应用程序来选择简历,但是程序必须决定是实现 doc 类型文件读取 block 还是 pdf 类型文件读取 block )
(2) 我打算运行该程序来获取简历列表,为此我需要一个循环,在其中为每个简历运行关键字扫描操作,但我想不出一种方法因为即使文件被命名为“resume1”、“resume2”等,我们也无法在文件位置中分配循环的可迭代变量,例如:'C:/Resumes_Folder/Resume[i]'
这就是路径。
如有任何帮助,我们将不胜感激!
最佳答案
- 您可以使用
FileFilter
仅读取一种或另一种类型,然后做出相应的响应。它会给您一个仅包含所需类型的文件的List
。 - 第二个要求让我感到困惑。我认为通过创建一个类来封装您想要解析的
Resume
的数据和行为,您会得到很好的帮助。编写一个工厂类,它接受InputStream
并生成一个包含您需要的数据的Resume
。
您犯了一个典型的错误:您将所有逻辑嵌入到主方法中。这将使测试您的代码变得更加困难。
所有问题的解决都包括将大问题分解为小问题,解决小问题,然后将它们组合起来最终解决大问题。
我建议您将这个问题分解为更小的类。例如,在您可以读取和解析单个 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 .
关于java - 多文件读取循环并区分 .pdf 和 .doc 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57924115/