[英]Figuring out where to store local files in Java
由於我認為超出此問題范圍的原因,我想移動我編寫的用於Java Web Start的程序以停止使用JWS並將其作為普通的Jar文件分發。
這個計划的主要問題是如何確定在Java中以一種不錯的方式存儲文件的位置,假設我將在不同的平台上運行(雖然我也依賴於JOGL,所以沒有很大的風險可靠地運行深奧的平台,至少)。 我的程序存儲各種本地數據,主要用於緩存或“緩存”目的 - 能夠保留它是非常好的,但如果數據丟失則不是完全災難。
我目前使用JNLP PersistenceService
來實現這個目的,所以搬出JWS我需要找出一些存儲文件的目錄。 考慮一下:
File datadir = new File(System.getProperty("user.home"), ".myprogram");
我認為這在Unix和類Unix平台上運行良好,但至少在Windows等平台上顯然很難看 ,我想我應該使用AppData
目錄或者再次調用它。
我目前的想法是使用這個datadir
作為默認的回落,除了在已知的平台上,我用更好的東西替換它,比如Windows。 我對此的問題是:
os.name
的最好的事情是將一些模式與os.name
相匹配,我認為它應該運行得很好,但是有更好的方法嗎? 我本質上不介意用反射進行測試,以查看是否存在一些可能有所幫助的sun.*
包(具有回退到默認值的風險),如果這是好的話。 (問題一般適用於所有平台;是否有任何一些有用的習慣用法來解決這個問題?) datadir
應該可以在OSX上正常工作,對嗎? 如果它只是可替換的緩存數據,我建議使用臨時目錄。
看到:
new File(File.createTempFile().getParent(), 'my-file-name');
您可以將其設置為在應用關閉時銷毀,或者將其保留在那里。
如果你想要更多的半永久物品,但是你可能需要關注你所使用的操作系統並采取相應的行動,就像他的問題的答案一樣
考慮使用java.util.prefs.Preferences API來實現此目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.