Hanya ingin tahu kapan System.getProperty("java.io.tmpdir")
kembali "c:\temp"
. Menurut java.io.File Java Docs -
Direktori file sementara default ditentukan oleh properti sistem java.io.tmpdir. Pada sistem UNIX, nilai default dari properti ini biasanya adalah "/ tmp" atau "/ var / tmp"; pada sistem Microsoft Windows biasanya "c: \ temp". Nilai yang berbeda dapat diberikan ke properti sistem ini saat mesin virtual Java dipanggil, tetapi perubahan programatik pada properti ini tidak dijamin akan berdampak pada direktori sementara yang digunakan oleh metode ini.
Tapi dalam kasus saya-
System.out.println(System.getProperty("java.io.tmpdir"));
Selalu kembali-
C:\Users\admin\AppData\Local\Temp\ i.e. %TEMP%
Dalam kondisi apa ia akan kembali "c:\temp"
?
DIEDIT: Jika saya mengubah% TEMP% ke C: \ Temp maka saya akan mendapatkan C: \ Temp, bukan? Tapi dokumentasinya menunjukkan c: \ Temp, bukan C: \ Temp.
C:\Temp
dengan mengubah% TEMP%, menginstal Windows 98 atau meneruskannya kejava -Djava.io.tmpdir=C:\Temp
. Lihat juga ini: stackoverflow.com/questions/3437095/…C:\Temp
maka saya akan mendapatkannyaC:\Temp
. Baik? tapi acara dok,c:\Temp
bukanC:\Temp
. :)"C:\\WINNT\\TEMP"
.Jawaban:
Di MS Windows, direktori sementara diatur oleh variabel lingkungan
TEMP
. Di XP, direktori sementara ditetapkan per pengguna sebagai Pengaturan Lokal \ Temp.Jika Anda mengubah variabel lingkungan TEMP menjadi
C:\temp
, maka Anda mendapatkan yang sama saat Anda menjalankan:System.out.println(System.getProperty("java.io.tmpdir"));
sumber
TMP
env var, makaTEMP
akan diabaikan. Tolong, lihat jawaban saya dan beri tahu saya jika Anda tidak mengerti apa yang saya maksud.Jika Anda mengatur
sumber
Di satu sisi, saat Anda memanggil
System.getProperty("java.io.tmpdir")
instruksi, Java memanggil fungsi Win32 APIGetTempPath
. Menurut MSDN :Di sisi lain, periksa alasan historis tentang mengapa
TMP
danTEMP
hidup berdampingan . Ini sangat berharga untuk dibaca.sumber
Nilai
%TEMP%
variabel lingkungan sering kali khusus pengguna dan Windows mengaturnya sehubungan dengan akun pengguna yang saat ini masuk. Beberapa akun pengguna mungkin tidak memiliki profil pengguna, misalnya ketika proses Anda berjalan sebagai layanan padaSYSTEM
,LOCALSYSTEM
atau akun bawaan lainnya, atau dipanggil oleh aplikasi IIS dengan identitas AppPool dengan opsi Buat profil pengguna dinonaktifkan. Jadi, meskipun Anda tidak menimpa%TEMP%
variabel secara eksplisit, Windows dapat menggunakanc:\temp
atau bahkanc:\windows\temp
folder untuk, katakanlah, akun pengguna yang tidak biasa. Dan yang lebih penting, proses mungkin tidak memiliki hak akses ke direktori ini!sumber