การได้มาซึ่งเส้นทางสัมพัทธ์
หมายเหตุ: เส้นทางสัมพัทธ์ (นั่นคือ โดยไม่ต้องระบุว่าใครสัมพันธ์กับใครในขณะนั้น) สามารถรับได้ด้วยวิธีต่อไปนี้ (ไม่ว่าจะเป็นโปรเจ็กต์ Java ทั่วไปหรือโปรเจ็กต์เว็บ)
สตริงค่อนข้างเส้นทาง=System.getProperty("user.dir");
ในพาธสัมพัทธ์ข้างต้น ไฟล์ในโปรเจ็กต์ Java จะสัมพันธ์กับไดเร็กทอรีรากของโปรเจ็กต์
เส้นทางของไฟล์ในโครงการเว็บจะแตกต่างกันไปขึ้นอยู่กับเว็บเซิร์ฟเวอร์ที่แตกต่างกัน (tomcat สัมพันธ์กับไดเร็กทอรีการติดตั้ง Tomcatbin)
การได้รับไดเร็กทอรีการโหลดคลาสที่สอง (นั่นคือ การได้รับไดเร็กทอรีการโหลดของคลาสหนึ่งเมื่อรัน)
1.1) วิธีการทั่วไปที่หนึ่ง (ไม่ว่าจะเป็นโปรเจ็กต์ Java ทั่วไปหรือโปรเจ็กต์เว็บ ขั้นแรกให้ค้นหาไดเร็กทอรีระดับแรกซึ่งคุณสามารถดูเส้นทางแพ็คเกจได้)
InputStream คือ=TestAction.class.getClassLoader().getResourceAsStream("test.txt");
(พาธของไฟล์ test.txt คือชื่อโปรเจ็กต์srctest.txt ไดเร็กทอรีระดับแรกของแพ็กเกจที่คลาส TestAction ตั้งอยู่อยู่ใต้ไดเร็กทอรี src)
ในสูตรข้างต้น เพียงแทนที่ TestAction และ test.txt ด้วยชื่อคลาสและชื่อไฟล์ที่เกี่ยวข้อง
1.2) วิธีทั่วไปที่สอง (วิธีนี้คล้ายกับวิธีใน 1.1 ยกเว้นวิธีนี้ต้องขึ้นต้นด้วย '/')
InputStream คือ=Test1.class.getResourceAsStream("/test.txt");
(พาธของไฟล์ test.txt คือชื่อโปรเจ็กต์srctest.txt และไดเร็กทอรีระดับแรกของแพ็คเกจที่คลาส Test1 ตั้งอยู่อยู่ใต้ไดเร็กทอรี src)
การรับไดเร็กทอรีรูทของสามโปรเจ็กต์เว็บ (หลังรีลีส)
1 เริ่มต้นจากเซิร์ฟเล็ต
คุณสามารถสร้างเซิร์ฟเล็ตและเขียนคำสั่งต่อไปนี้ในเมธอด init
ServletContext s1=this.getServletContext();
สตริง temp=s1.getRealPath("/"); (คีย์)
ผลลัพธ์มีลักษณะดังนี้: D:ToolsTomcat-6.0webapps 02_ext (002_ext คือชื่อโครงการ)
หากเรียกใช้ s1.getRealPath("") ผลลัพธ์จะเป็น D:ToolsTomcat-6.0webapps 02_ext (น้อยกว่า "") หนึ่งรายการ
2 เริ่มต้นจาก httpServletRequest
สตริง cp11111=request.getSession().getServletContext().getRealPath("/");
ผลลัพธ์จะมีลักษณะดังนี้: D:ToolsTomcat-6.0webapps 02_ext
การได้รับคลาสพาธที่สี่ (ใน Eclipse การได้รับพาธไปยังไดเร็กทอรี src หรือคลาส)
วิธีที่ 1 Thread.currentThread().getContextClassLoader().getResource("").getPath()
เช่น: String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();
System.out.println("t---"+t);
เอาท์พุต:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/
วิธีที่ 2 JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse เป็นคลาสในแพ็คเกจหนึ่งของ src เช่นเดียวกับด้านล่าง)
เช่น:String p1=JdomParse.class.getClassLoader().getResource("").getPath();
System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);
เอาท์พุต: JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/
นอกจากนี้ หากคุณต้องการวางไฟล์ไว้ในแพ็คเกจใดแพ็คเกจหนึ่ง คุณสามารถรับไฟล์ได้ด้วยวิธีต่อไปนี้ (ขั้นแรกให้ค้นหาไดเร็กทอรีระดับสุดท้ายของแพ็คเกจ)
เช่น สตริง p2=JdomParse.class.getResource("").getPath();
System.out.println("JdomParse.class.getResource---"+p2);
เอาท์พุต: JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ (JdomParse คือคลาสในแพ็คเกจ jdom ในไดเร็กทอรี src)