מצא את הקובץ ששונה לאחרונה בספריה עם Java

1. סקירה כללית

במדריך מהיר זה, אנו נבחן מקרוב כיצד למצוא את הקובץ ששונה לאחרונה בספרייה ספציפית ב- Java.

ראשית, נתחיל עם IO מדור קודם וממשקי ה- API החדשים של NIO. לאחר מכן נראה כיצד להשתמש בספריית IO של Apache Commons כדי להשיג את אותו הדבר.

2. באמצעות java.io ממשק API

המורשת java.io החבילה מספקת את קוֹבֶץ מחלקה כדי לתמצת ייצוג מופשט של שמות קבצים וספריות.

למרבה המזל, ה קוֹבֶץ בכיתה מגיעה עם שיטה שימושית הנקראת שונה לאחרונה(). שיטה זו מחזירה את השעה האחרונה ששונתה של הקובץ המסומנת בשם נתיב מופשט.

בואו נסתכל כיצד אנו יכולים להשתמש ב- java.io. קובץ בכיתה כדי להשיג את המטרה המיועדת:

קובץ סטטי ציבורי findUsingIOApi (מחרוזת sdir) {קובץ dir = קובץ חדש (sdir); אם (dir.isDirectory ()) {אופציונלי opFile = Arrays.stream (dir.listFiles (File :: isFile)) .max ((f1, f2) -> Long.compare (f1.lastModified (), f2.lastModified ( ))); אם (opFile.isPresent ()) {להחזיר opFile.get (); }} להחזיר null; }

כפי שאנו רואים, אנו משתמשים ב- Java 8 Stream API כדי לעבור דרך מערך קבצים. ואז, אנו קוראים את מקסימום () פעולה כדי לקבל את הקובץ עם השינויים האחרונים.

שימו לב שאנחנו משתמשים ב- אופציונאלי מופע כדי לתמצת את הקובץ ששונה לאחרונה.

זכור כי גישה זו נחשבת לאופנה ישנה ולא מעודכנת. עם זאת, אנו יכולים להשתמש בו אם אנו רוצים להישאר תואמים לעולם ה- IO מורשת Java.

3. שימוש ה java.nio ממשק API

הכנסת ה- NIO API מהווה נקודת מפנה לניהול מערכות קבצים. הגרסה החדשה NIO.2 שנשלחה ב- Java 7 מגיעה עם קבוצה של תכונות משופרות לניהול קבצים ומניפולציה טובים יותר.

למען האמת, ה java.nio.file.Files class מציע גמישות רבה בכל מה שקשור לתמרון קבצים וספריות ב- Java.

אז בואו נראה איך נוכל להשתמש ב- קבצים בכיתה כדי לקבל את הקובץ האחרון ששונה בספריה:

נתיב סטטי ציבורי סטטי FindUsingNIOApi (מחרוזת sdir) זורק IOException {נתיב dir = Paths.get (sdir); אם (Files.isDirectory (dir)) {אופציונלי opPath = Files.list (dir) .filter (p ->! Files.isDirectory (p)). ממוין ((p1, p2) -> Long.valueOf (p2.toFile () .lastModified ()) .compareTo (p1.toFile (). lastModified ())) .findFirst (); אם (opPath.isPresent ()) {להחזיר opPath.get (); }} להחזיר null; }

בדומה לדוגמא הראשונה, אנו מסתמכים על ממשק ה- API של Steam כדי לקבל רק קבצים. לאחר מכן, אנו ממיינים את הקבצים שלנו על פי הזמן האחרון ששונה בעזרת ביטוי למבדה.

4. שימוש ב- Apache Commons IO

IO של Apache Commons העלה את ניהול מערכות הקבצים לשלב הבא. הוא מספק קבוצה של שיעורים שימושיים, משווים קבצים, מסנני קבצים ועוד.

למרבה המזל עבורנו, הספרייה מציעה אתLastModifiedFileComparator בכיתה שיכולה לשמש כ-משווה למיון מערך קבצים לפי זמן השינוי האחרון שלהם.

ראשית, עלינו להוסיף את ה- commons-io תלות שלנו pom.xml:

 commons-io commons-io 2.7 

לבסוף, בואו ונציג כיצד למצוא את הקובץ ששונה לאחרונה בתיקייה באמצעות Apache Commons IO:

קובץ סטטי ציבורי findUsingCommonsIO (מחרוזת sdir) {קובץ dir = קובץ חדש (sdir); אם (dir.isDirectory ()) {File [] dirFiles = dir.listFiles ((FileFilter) FileFilterUtils.fileFileFilter ()); אם (dirFiles! = null && dirFiles.length> 0) {Arrays.sort (dirFiles, LastModifiedFileComparator.LASTMODIFIED_REVERSE); החזר dirFiles [0]; }} להחזיר null; }

כפי שמוצג לעיל, אנו משתמשים ב-מופע יחיד LASTMODIFIED_REVERSE למיין את מערך הקבצים שלנו בסדר הפוך.

מכיוון שהמערך ממוין הפוך, אז הקובץ ששונה לאחרונה הוא האלמנט הראשון במערך.

5. מסקנה

במדריך זה בדקנו דרכים שונות למצוא את הקובץ ששונה לאחרונה בספרייה מסוימת. בדרך השתמשנו בממשקי API שהם חלק מה- JDK ומהספרייה החיצונית של Apache Commons IO.

כמו תמיד, מקור הקוד השלם של הדוגמאות זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found