ฉันต้องการใช้user.dirdir เป็น dir พื้นฐานสำหรับการทดสอบหน่วยของฉัน (ซึ่งสร้างไฟล์จำนวนมาก) ถูกต้องหรือไม่ที่คุณสมบัตินี้ชี้ไปที่ไดเร็กทอรีการทำงานปัจจุบัน (เช่นกำหนดโดยคำสั่ง 'cd')
ฉันต้องการใช้user.dirdir เป็น dir พื้นฐานสำหรับการทดสอบหน่วยของฉัน (ซึ่งสร้างไฟล์จำนวนมาก) ถูกต้องหรือไม่ที่คุณสมบัตินี้ชี้ไปที่ไดเร็กทอรีการทำงานปัจจุบัน (เช่นกำหนดโดยคำสั่ง 'cd')
คำตอบ:
เป็นไดเร็กทอรีที่javaถูกเรียกใช้ซึ่งคุณเริ่มต้น JVM ไม่จำเป็นต้องอยู่ในโฮมไดเร็กทอรีของผู้ใช้ สามารถอยู่ที่ใดก็ได้ที่ผู้ใช้มีสิทธิ์เรียกใช้ java
ดังนั้นหากคุณcdเข้า/somedirแล้วเรียกใช้โปรแกรมของคุณจะuser.dir/somedir
คุณสมบัติอื่นuser.homeอ้างถึงไดเร็กทอรีผู้ใช้ ใน/Users/myuserหรือ/home/myuserหรือC:\Users\myuser.
ดูที่นี่สำหรับรายชื่อของคุณสมบัติของระบบและคำอธิบายของพวกเขา
user.dirชี้ไปที่/usr/share/tomcatและใน config เราเพิ่มสิ่งนี้: file:./configจากนั้นจะชี้ไปที่/usr/share/tomcat/configเสมอหรือไม่?
user.dirคือ "User working directory" ตามJava Tutorial, System Properties
โดยทั่วไปนี่คือไดเร็กทอรีที่แอปของคุณ (java) เริ่มทำงาน (working dir) "โดยทั่วไป" เนื่องจากสามารถเปลี่ยนแปลงได้เช่นเมื่อคุณเรียกใช้แอปด้วยRuntime.exec(String[] cmdarray, String[] envp, File dir)
System.getProperty("user.dir") ดึงไดเร็กทอรีหรือพา ธ ของพื้นที่ทำงานสำหรับโปรเจ็กต์ปัจจุบัน
pwdคำสั่ง แต่ดูเหมือนว่าถ้าคุณรันด้วยเช่นmvn -f /path/to/projectmaven จะมีประสิทธิภาพcd /path/to/projectภายในก่อนที่จะรันการทดสอบ
-Duser.dirแฟล็กมีผลต่อFileอ็อบเจ็กต์ (หากไม่ได้กำหนดเส้นทางแบบเต็ม) แต่ไม่ใช่FileOutPutStreamอ็อบเจ็กต์ หากคุณต้องการให้แน่ใจว่าไดเร็กทอรีเริ่มต้นตรงกันสำหรับทั้งสองอย่างคุณควรcdเริ่ม Java ก่อน