第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多文件讀取循環(huán)并區(qū)分 .pdf 和 .doc 文件

多文件讀取循環(huán)并區(qū)分 .pdf 和 .doc 文件

搖曳的薔薇 2023-07-28 09:46:42
我正在 Eclipse 中編寫一個 Java 程序,除了顯示每個簡歷的關(guān)鍵字之外,還可以掃描簡歷中的關(guān)鍵字并過濾其中最合適的簡歷。簡歷可以是doc/pdf格式。我已經(jīng)成功實現(xiàn)了一個程序,可以分別讀取pdf文件和doc文件(通過使用Apache的PDFBox和POI jar包并導入所需方法的庫),顯示關(guān)鍵字并根據(jù)找到的關(guān)鍵字數(shù)量顯示簡歷強度?,F(xiàn)在有兩個問題陷入困境:(1) 我需要區(qū)分程序中的文件pdf和文件,這可以通過 if 語句輕松實現(xiàn),但我很困惑如何編寫代碼來檢測文件是否具有 .pdf 或 .doc 擴展名。doc(我打算構(gòu)建一個應(yīng)用程序來選擇簡歷,但是程序必須決定是實現(xiàn)doc類型文件讀取塊還是pdf類型文件讀取塊)(2) 我打算運行該程序來獲取簡歷列表,為此我需要一個循環(huán),在其中我將為每個簡歷運行關(guān)鍵字掃描操作,但我想不出一種方法,因為即使文件的名稱如“resume1”、“resume2”等,我們無法在文件位置中分配循環(huán)的可迭代變量,如:,因為'C:/Resumes_Folder/Resume[i]'這就是路徑。任何幫助,將不勝感激!
查看完整描述

3 回答

?
一只甜甜圈

TA貢獻1836條經(jīng)驗 獲得超5個贊

  1. 您可以使用 aFileFilter僅讀取一種或另一種類型,然后做出相應(yīng)的響應(yīng)。它會給你一個List僅包含所需類型的文件。

  2. 第二個要求讓我感到困惑。我認為通過創(chuàng)建一個類來封裝您想要解析的數(shù)據(jù)和行為,您會得到很好的幫助Resume。編寫一個工廠類,它接受InputStream并生成Resume包含您需要的數(shù)據(jù)的工廠類。

您犯了一個典型的錯誤:您將所有邏輯嵌入到主方法中。這將使測試您的代碼變得更加困難。

所有的問題解決都是把大問題分解成小問題,解決小問題,然后組合起來最終解決大問題。

我建議您將這個問題分解為更小的類。例如,在您可以讀取和解析單個 PDF 和 DOC 文件之前,不必擔心循環(huán)遍歷目錄中的文件。

創(chuàng)建一個接口:

public?interface?ResumeParser?{
????Resume?parse(InputStream?is)?throws?IOException;
}

為 PDF 和 Word Doc 實施不同的實現(xiàn)。

ResumeParser創(chuàng)建一個工廠以根據(jù)文件類型為您提供適當?shù)模?/p>

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);

? ? ? ? }

? ? }

}

請務(wù)必在進行時編寫單元測試。您應(yīng)該知道如何使用JUnit。



查看完整回答
反對 回復 2023-07-28
?
慕哥9229398

TA貢獻1877條經(jīng)驗 獲得超6個贊

使用 a 的另一種替代方法FileFilter是使用 a DirectoryStream,因為Files::newDirectoryStream可以輕松指定相關(guān)的文件結(jié)尾:


try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.{doc,pdf}")) {

           for (Path entry: stream) {

               // process files here

           }

       } catch (DirectoryIteratorException ex) {

           // I/O error encounted during the iteration, the cause is an IOException

           throw ex.getCause();

       }

}


查看完整回答
反對 回復 2023-07-28
?
慕容708150

TA貢獻1831條經(jīng)驗 獲得超4個贊

你可以做一些基本的事情,比如:


// Put the path to the folder containing all the resumes here

File f = new File("C:\\");

ArrayList<String> names = new ArrayList<>?

(Arrays.asList(Objects.requireNonNull(f.list())));


for (String fileName : names) {

? ?if (fileName.length() > 3) {

? ? ? ?String type = fileName.substring(fileName.length() - 3);

? ? ? ?if (type.equalsIgnoreCase("doc")) {

? ? ? ? ? ?// doc file logic here

? ? ? ?} else if (type.equalsIgnoreCase("pdf")) {

? ? ? ? ? ?// pdf file logic here

? ? ? ?}

? ? }

}


查看完整回答
反對 回復 2023-07-28
  • 3 回答
  • 0 關(guān)注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號