اليوم سنلقي نظرة على مسار الملف في جافا. يمكن أن يكون مسار الملف في جافا مجردًا، مطلقًا، أو قانونيًا.
مسار الملف في جافا
java.io.File
يحتوي على ثلاث طرق لتحديد مسار الملف، سنستكشفها في هذا الدرس.
getPath()
: هذه الطريقة لمسار الملف تُرجع المسار النمطي كسلسلة نصية. إذا استخدم مسار النص كوسيط لإنشاء كائن File، فإنه يعيد ببساطة وسيط المسار. إذا تم استخدام URI كوسيط ، فإنه يزيل البروتوكول ويعيد اسم الملف.getAbsolutePath()
: تُرجع هذه الطريقة لمسار الملف المسار المطلق للملف. إذا تم إنشاء File بمسار مطلق، فإنه يعيد المسار. إذا تم إنشاء كائن الملف باستخدام مسار نسبي، يتم حل المسار المطلق بطريقة تعتمد على النظام. في نظم UNIX، يتم جعل مسار نسبي مطلقًا عن طريق حله ضد الدليل الحالي للمستخدم. في أنظمة Microsoft Windows، يتم جعل مسار نسبي مطلقًا عن طريق حله ضد الدليل الحالي لمحرك الأقراص الذي يحمل نفس اسم المسار، إن وجد؛ إذا لم يكن هناك، يتم حله ضد الدليل الحالي للمستخدم.[getCanonicalPath](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath())()
: تقوم هذه الطريقة بإرجاع اسم المسار القانوني الذي هو مطلق وفريد في نفس الوقت. تقوم هذه الطريقة أولاً بتحويل هذا المسار إلى شكل مطلق إذا لزم الأمر، كما لو كان بالاستدعاء الاستدعاء للطريقة getAbsolutePath، ومن ثم تختاره إلى شكله الفريد بطريقة تعتمد على النظام. ينطوي هذا عادة على إزالة الأسماء الزائدة مثل “.” و “…” من المسار، وحل الروابط الرمزية (على منصات UNIX)، وتحويل حروف القرص إلى حالة قياسية (على منصات Microsoft Windows).
مثال على مسار ملف 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 IO من مستودعنا على GitHub.
Source:
https://www.digitalocean.com/community/tutorials/java-file-path-absolute-canonical