From f4b1d5952e8db49cdd4f90af13bcb1fff82c8a39 Mon Sep 17 00:00:00 2001 From: Hanminxi <1772454398@qq.com> Date: Sat, 30 May 2026 23:58:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20'project'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/HelpCommand.java | 21 ++++++++++++++++++++ project/ListCommand.class | Bin 0 -> 1302 bytes project/ListCommand.java | 35 +++++++++++++++++++++++++++++++++ project/SaveCommand.class | Bin 0 -> 1924 bytes project/SaveCommand.java | 40 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 96 insertions(+) create mode 100644 project/HelpCommand.java create mode 100644 project/ListCommand.class create mode 100644 project/ListCommand.java create mode 100644 project/SaveCommand.class create mode 100644 project/SaveCommand.java diff --git a/project/HelpCommand.java b/project/HelpCommand.java new file mode 100644 index 0000000..15d42fd --- /dev/null +++ b/project/HelpCommand.java @@ -0,0 +1,21 @@ +package command; + +import controller.CrawlerController; + +public class HelpCommand implements Command { + private CrawlerController controller; + + public HelpCommand(CrawlerController controller) { + this.controller = controller; + } + + @Override + public void execute() { + controller.getView().showHelp(); + } + + @Override + public String getDescription() { + return "显示帮助信息"; + } +} diff --git a/project/ListCommand.class b/project/ListCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..af20f52b4be074c726156ece059448ac6ec06216 GIT binary patch literal 1302 zcmaJ>OHUI~6#nkCFlCrRc?gOHK}Fjl)+as+_$a7o0kxzF5)+4Vt%K7J&P+jF8W(Pi zD_^YCnCQY7F$zMIxYpl6ap&F;^-Nn{23gEK_dM_UzI*O``#m!Y-~=v85a1Bulu>{} z2G6iEssuG9l?e6@4)eIhP}r)bRI8oA;q%9e;6jlINk%bbhKjhJOe(3NU_>>oaBj~a z#r2eB=$gh2hPueI77QE87+J$h{*Z(cl#1}kC__1ecfDYS;sm!&7?v8>xXDoN^GCA% zrY%*=wh$^tB{qntl2MI~3?-}G45DgwCP%DWSu~gI!)s)0hL=24I;Qe5hDs_sO1mJn zY3drctsxic805_Ooy_BBnTPK(_uopWM}vs1GPYqmG52o@b!%SJ$GW*`DhbZ8!Ix_` zOK#LM)KntmkGZgeP)l=D@8|EmnS1bPe*A8({M^0AKc2t-`FY%iGMq&~#8V4gY`_7RqW#-Ypgjb?o_EfNmkpokV3 zhj5soYWvE(xPCkNeGKixxLTF_uqK2Y++K5xLHl54$^1$uj zb{WU)U>61Vsg}ki8px9(!ZJG0xoQ@3Su~4Rbt9<|)+1|>Ik4iG-0+6hIN62MG?bYq zv-2-!{>QqAE{4*@*KJPo|Pe5KH@B!i^+>xefR4_b+ zCui7HUOR~`6N^eCDULQT1?^;bf%YcvG@1l_MX+ZvWN+aY2>lMP^U5dekM=v8Cvha& zUqGTQ`U%IWz+Hj8`ZH_yCuIBEm&M~DjAiyO0kx<=9jXXZHCnKdMr0GBsKGUo*U5H+ wB6=vh6pjVdiKtwFoBg5*V(3L{9@u7*jDj5Hr{0msF=3+yvB_|rq<{;50Vl;vJOBUy literal 0 HcmV?d00001 diff --git a/project/ListCommand.java b/project/ListCommand.java new file mode 100644 index 0000000..44d8667 --- /dev/null +++ b/project/ListCommand.java @@ -0,0 +1,35 @@ +package command; + +import controller.CrawlerController; +import java.util.List; +import model.Article; + +public class ListCommand implements Command { + private CrawlerController controller; + + public ListCommand(CrawlerController controller) { + this.controller = controller; + } + + @Override + public void execute() { + List
articles = controller.getArticles(); + if (articles.isEmpty()) { + controller.getView().showMessage("暂无数据"); + return; + } + + controller.getView().showMessage("\n已爬取的数据列表:"); + for (int i = 0; i < articles.size(); i++) { + Article article = articles.get(i); + controller.getView().showMessage( + String.format("[%d] %s - %s", i + 1, article.getSource(), article.getTitle()) + ); + } + } + + @Override + public String getDescription() { + return "显示已爬取的数据列表"; + } +} diff --git a/project/SaveCommand.class b/project/SaveCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..e5f90fba4b50f5a7e432bd779605b5a07b63de29 GIT binary patch literal 1924 zcmaJ?OH&+G6#g!+9){-O03jqiBS9Vs<1=ao6A1x92cklVCMMbpS7_+zo^)Sc{sDDi zWfd!yW|1nbtc;L~B*F5r_IHF)SMIHp@$2aZh6Gtm-`nS&bNhVX`OcZ&|6TtDKp!qg zQGh}XMLLR6B2YDJEEsXiu&3i^CTC?z36%7jwy91C6n1n@lp=ys4N)Cs&;_bfPC9Ma zQ}HolLG}lGfoRIHmFrlRbOoA{+i&rH*I1;rf9pIEMFlD~ROxsMF@c7?oCV6JrRsB) znX;rO5bNkn=JK6arWH?`o=TLV2DKXY>8Qhgfr_2S0-EU!q%&$chvvNh@dG*zqJby8 zdcu^80yVsLfx9@<^c+k2)Zfl^-7bdVS;jYf-eIRl^}2 zPos?#J|4@oy%}e5M0%bvEqO~vkadpbG3A=}bfR;@&%9m7Gw2YAm`b{aa!B949TFGq4mFhNC-@V(|K5_h>rEh+!P*L0k~NdY}C zn$#$7}Y$WV-Rl$)TNC%iqTFP>YS-&{3WcW(!1T0~3s`i(72EmMXv;w^uCeQV?As}W2w zyTEVb+tokse0RJ>RF>f5D5f!^!Stz}6=>Tg-n18-IT;W54+=hLq}VoW?`!!L2pxl@ zhB&V{KH8FwGdG_}JXw`I%Z|YD<&50L{X(99Ff$YR>IkpsH!N$6ZOwkrhi#iP&@wzv zdK%JX=m|`_rK-Wq2?h articles = controller.getArticles(); + if (articles.isEmpty()) { + controller.getView().showMessage("没有数据可保存"); + return; + } + + for (Article article : articles) { + FileUtil.saveArticle(article); + } + + FileUtil.saveArticles(articles, "summary.txt"); + + controller.getView().showMessage("已保存 " + articles.size() + " 条数据到 data/ 目录"); + } catch (Exception e) { + controller.getView().showError("保存失败: " + e.getMessage()); + } + } + + @Override + public String getDescription() { + return "保存数据到文件"; + } +}