java - 多文件读取循环并区分 .pdf 和 .doc 文件

标签 java eclipse file pdf doc

我正在 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]'这就是路径。

如有任何帮助,我们将不胜感激!

最佳答案

  1. 您可以使用FileFilter仅读取一种或另一种类型,然后做出相应的响应。它会给您一个仅包含所需类型的文件的List
  2. 第二个要求让我感到困惑。我认为通过创建一个类来封装您想要解析的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/

相关文章:

java - Struts 2 表单标签中的多个提交按钮

java - 多语言Java应用程序中的字体问题

java - jFormDesigner 设计后无法显示?

c++ - 使用 fstream 附加到文件而不是覆盖

Java理解

java - eclipselink (JPA) 异常 : composite primary key @JoinColumn

java - 尝试使用 Eclipse 连接到 MySql 数据库时 Ping 失败

Java反编译器插件不工作

Python:将文本文件(每一行都是字典结构)读取到字典中

android共享用户id和读/写文件