מציאת PATH נוכחי ב JAVA

ni4ni

New member
מציאת PATH נוכחי ב JAVA

היי יש לי SERVLET ב JAVA שצריך בזמן העלייה שלו לקרוא מקובץ קונפיגורציה. הבעיה היא שאני לא יכול לדעת איפה ישימו את ה SERVLET הזה בשרת ומה יהיה מבנה הספריות. לכן אני צריך להשתמש ב PATH יחסי לקובץ הזה (חשבתי לשים אותו יחד עם קבצי ה CLASS). הבעיה היא שאני לא מצליח מתוך התוכנית לגלות מהו ה PATH שבו יושבים קבצי ה CLASS. שימוש ב System.getProperty("user.dir") לא ממש עובד כי הוא נותן לי את ה PATH שבו יושב ה EXECUTABLE של השרת. האם מישהו יודע איך לפתור את זה ?
 

Pembelton

New member
אם הקובץ שאתה מחפש קיים תמיד

אתה יכול להשתמש במתודה gerResource שמוגדרת במחלקה Class אם אתה מחפש קובץ שלא תמיד קיים אתה יכול להתחכם ע"י יצירת קובץ סתמי (שלעולם לא תמחוק אותו) ואז לבצע gerResource כדי למצוא את הקובץ הסתמי, ומשם לשחק עם ה PATH שקיבלת בכדי להפוך אותו לPATH לקובץ שאתה באמת רוצה.
 

ni4ni

New member
אני לא מבין משהו

באיזה CLASS אני יכול להשתמש ? בכל CLASS ? האם ב File ? אם כן אז איך אני אדע איזה קובץ לטעון ? התוכנית שלי יודעת רק את שם הקובץ אבל לא איפה הוא נמצא. כל מה שאני יכול להגיד הוא שהוא נמצא ביחד עם ה CLASS.
 

Pembelton

New member
בכל אוביקט אתה יכול לעשות getClass(

בשביל למצוא את ה class שאליו הוא שייך. הנה דוגמא שמוצאת את ה FULL PATH של הקובץ a.dat
public class T1 { public void print_path() throws URISyntaxException { URL u = this.getClass().getResource("a.dat"); File f = new File(u.toURI()); System.out.println(f.getAbsolutePath()); } }​
 

ni4ni

New member
נראה טוב, אבל...

הפונקציה URL.toURI() לא מוכרת לקומפיילר שלי וגם לא מצאתי אותה בדוקומנטציה של JAVA. האם זה משהו חדש בגרסה 1.5 או משהו כזה ?
 

Pembelton

New member
כן. ב 1.4.1 זה לא מופיע.

מה שכן, אתה יכול להשתמש במתודות האחרות של המחלקה URL (למשל: getPath) בשביל להרכיב את ה FULL PATH בעצמך. (ויש לך במחקלה URL גם את המתודה openStream , במידה והקובץ קיים, ואתה צריך לפתוח אותו לקריאה)
 
למעלה