קבל את מדריך העבודה הנוכחי בג'אווה

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

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

במדריך זה נלמד כיצד להשיג את ספריית העבודה הנוכחית ב- Java java.lang.מערכת, java.io.File, java.nio.file.FileSystems, ו java.nio.file. שבילים.

2. מערכת

נתחיל מהפתרון הסטנדרטי באמצעות מערכת # getPropertyבהנחה ששם מדריך העבודה הנוכחי שלנו הוא באלדונג לאורך כל הקוד:

סופי סטטי מחרוזת CURRENT_DIR = "באלדונג"; @Test בטל כאשר משתמשיםSystemProperties_thenReturnCurrentDirectory () {String userDirectory = System.getProperty ("user.dir"); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

השתמשנו במפתח נכס מובנה של Java user.dir כדי להביא את ספריית העבודה הנוכחית מה- מערכתמפת נכסים. פתרון זה פועל בכל גרסאות ה- JDK.

3. קוֹבֶץ

בואו נראה פתרון אחר באמצעות java.io. קובץ:

@Test בטל כאשר משתמשJavaIoFile_thenReturnCurrentDirectory () {מחרוזת userDirectory = קובץ חדש (""). GetAbsolutePath (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

הנה ה קובץ # getAbsolutePath שימוש פנימי מערכת # getProperty כדי לקבל את שם הספריה, בדומה לפיתרון הראשון שלנו. זהו פתרון לא תקני לקבלת מדריך העבודה הנוכחי, והוא פועל בכל גרסאות JDK.

4. מערכות קבצים

חלופה תקפה נוספת תהיה שימוש בחדש java.nio.file.FileSystems ממשק API:

@Test בטל כאשר משתמשיםJavaNioFileSystems_thenReturnCurrentDirectory () {String userDirectory = FileSystems.getDefault () .getPath ("") .toAbsolutePath () .toString (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

פתרון זה משתמש בממשק ה- API החדש של Java NIO, והוא עובד רק עם JDK 7 ומעלה.

5. שבילים

ולבסוף, בואו נראה פתרון פשוט יותר לשימוש בספריה הנוכחית java.nio.file. שבילים ממשק API:

@Test בטל כאשר משתמשJavaNioPaths_thenReturnCurrentDirectory () {String userDirectory = Paths.get ("") .toAbsolutePath () .toString (); assertTrue (userDirectory.endsWith (CURRENT_DIR)); }

פה, נתיבים # קבל שימוש פנימי מערכת קבצים # getPath להביא את השביל. היא משתמשת ב- Java NIO API החדש, כך שהפתרון הזה עובד רק עם JDK 7 ומעלה.

6. מסקנה

במדריך זה בחנו ארבע דרכים שונות להשיג את ספריית העבודה הנוכחית בג'אווה. שני הפתרונות הראשונים פועלים בכל הגרסאות של ה- JDK ואילו שני האחרונים עובדים רק עם JDK 7 או גבוה יותר.

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

קוד המקור של הדרכה זו זמין ב- GitHub - זהו פרויקט מבוסס Maven, כך שיהיה קל לייבא ולהפעיל אותו כמות שהוא.