ความสับสนเกี่ยวกับไดเร็กทอรีการทำงานปัจจุบันในเมธอด getAbsolutePath ของไฟล์
getAbsolutePath ของไฟล์มีแนวโน้มว่าหากมีการระบุพา ธ สัมพัทธ์หรือเพียงแค่ชื่อไฟล์ในตัวสร้างไฟล์ไฟล์จะแก้ไขพา ธ สัมบูรณ์โดยนำหน้าไดเร็กทอรีการทำงานปัจจุบัน
นิยามของไดเร็กทอรีการทำงานปัจจุบันคือไดเร็กทอรีที่เรารันโปรแกรม Java ของเรา ในตัวอย่างของฉันโปรแกรม java ของฉันอยู่ภายในD:\my-app\src\App.java
เมื่อฉันทำ System.out.println(System.getProperty("user.dir"));
จากนั้นควรพิมพ์ D:\my-app\src
แต่มันคือการพิมพ์จริง D:\my-app
ทำไมจึงเป็นเช่นนั้น?
คำตอบ
เมื่อคุณเริ่มโปรแกรมจาก IntelliJ ที่ไดเรกทอรีการทำงานจะถูกกำหนดตามสิ่งที่ตั้งอยู่ในdirectory "ทำงาน" ใน "Run / Debug การตั้งค่า" โต้ตอบ
ที่นั่นคุณสามารถตั้งค่าไดเร็กทอรีการทำงานเป็นค่าคงที่เช่นD:\my-app\src
. อีกตัวเลือกหนึ่งคือการใช้ตัวแปรเส้นทาง รายการตัวแปรที่พร้อมใช้งานอาจขึ้นอยู่กับหลายสิ่ง - เปิดกล่องโต้ตอบและดูว่ามีอะไรบ้าง ตัวเลือกหนึ่งที่ฉันเห็นคือ$FileDir$
สิ่งที่ฉันคิดว่าน่าจะเป็นไดเร็กทอรีของไฟล์ซอร์สโค้ด
ฉันคิดว่าฉันพบทางออกแล้ว Intellij เป็นสาเหตุของปัญหาโดยปริยายโดยการตั้งค่าโฟลเดอร์ src เป็นโฟลเดอร์ต้นทาง ฉันพบมันโดยไปที่การตั้งค่าโมดูลภายใน Intellij เมื่อฉันเรียกใช้สิ่งเดียวกันจากพรอมต์คำสั่งไดเร็กทอรีการทำงานที่ถูกต้องD:\my-app\src\
จะถูกเลือก