Java: נתיב קובץ, נתיב מוחלט ונתיב קנוני

היום נסתכל על נתיב הקובץ ב-Java. נתיב הקובץ ב-Java יכול להיות מופשט, מוחלט או קנוני.

נתיב קובץ ב-Java

java.io.File מכיל שלושה שיטות לקביעת נתיב הקובץ, נחקור אותם במדריך זה.

  1. getPath(): שיטת נתיב קובץ זו מחזירה את שם הנתיב המופשט כמחרוזת. אם נתיב ה-Mחרוזת משמש ארגומנט כדי ליצור אובייקט File, היא פשוט מחזירה את ארגומנט הנתיב. אם נמצאת נתיב כ-URI כארגומנט, היא מסירה את הפרוטוקול ומחזירה את שם הקובץ.
  2. getAbsolutePath(): שיטת נתיב קובץ זו מחזירה את הנתיב המוחלט של הקובץ. אם קובץ נוצר עם נתיב מוחלט, היא פשוט מחזירה את הנתיב. אם אובייקט הקובץ נוצר באמצעות נתיב יחסי, הנתיב המוחלט נפתר בדרך התלויה במערכת. במערכות UNIX, נתיב יחסי הופך להיות מוחלט על ידי הפתרון שלו נגד הספרייה הנוכחית של המשתמש. במערכות Microsoft Windows, נתיב יחסי הופך להיות מוחלט על ידי הפתרון שלו נגד הספרייה הנוכחית של התקליטור שם הנתיב, אם יש; אם לא, הוא מפתר נגד הספרייה הנוכחית של המשתמש.
  3. [getCanonicalPath](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath())(): שיטת נתיב זו מחזירה את שם הנתיב הקנוני המוחלט והייחודי. השיטה ממירה תחילה את שם הנתיב הזה לצורתה המוחלטת אם נדרש, כאילו נקראה לשיטת getAbsolutePath, ואז ממפה אותו לצורתו הייחודית בדרך שתלויה במערכת. בדרך כלל זה כולל הסרת שמות מיותרים כמו "." ו- "…" משם הנתיב, פתרון של קישורים סמליים (בפלטפורמות UNIX), והמרת אותיות תיקוניות לסטנדרטיות (בפלטפורמות Microsoft Windows).

דוגמה על נתיב קובץ ב-Java

בואו נראה מקרים שונים של נתיב קובץ ב-Java עם תוכנית פשוטה.

package com.journaldev.files;

import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class JavaFilePath {

	public static void main(String[] args) throws IOException, URISyntaxException {
		File file = new File("/Users/pankaj/test.txt");
		printPaths(file);
		// נתיב יחסי
		file = new File("test.xsd");
		printPaths(file);
		// נתיבים יחסיים מורכבים
		file = new File("/Users/pankaj/../pankaj/test.txt");
		printPaths(file);
		// נתיבי URI
		file = new File(new URI("file:///Users/pankaj/test.txt"));
		printPaths(file);
	}

	private static void printPaths(File file) throws IOException {
		System.out.println("Absolute Path: " + file.getAbsolutePath());
		System.out.println("Canonical Path: " + file.getCanonicalPath());
		System.out.println("Path: " + file.getPath());
	}

}

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

אתה יכול לבדוק דוגמאות נוספות של Java IO מה-מאגר הקוד שלנו ב-GitHub.

Source:
https://www.digitalocean.com/community/tutorials/java-file-path-absolute-canonical