[英]Blackberry - “[projectname].debug file is missing” and “I/O Error: Cannot find program ”jar"
[英]Jar and File I/O
在我的Java項目中,我在src / properties文件夾中有一些屬性文件。 在Eclipse中運行應用程序時,使用以下代碼加載和保存文件沒有問題:
// create and load default properties
Properties defaultProps = new Properties();
File file = new File("src/properties/defaultProperties");
if (!file.exists()){
// Create new properties file
...
FileOutputStream out = new FileOutputStream("defaultProperties");
defaultProps.store(out, "---No Comment---");
out.close();
} else {
// Load existing properties file
FileInputStream in = new FileInputStream(file);
defaultProps.load(in);
in.close();
}
但是,當我創建帶有Eclipse的Runnable Jar文件時,屬性無法正確加載。 保存文件時也會發生同樣的情況。 我讀到一些有關:
InputStream is = getClass().getResourceAsStream(path);
但是在這種情況下,如何檢查輸入流是否存在文件? 如何執行此I / O使其在可執行的Jar文件中工作的正確方法?
而是使用java.util.prefs.Preferences
。 它與java.util.Properties
相似,不同之處在於它不是存儲在屬性文件中,而是存儲在平台特定的配置管理中。 例如,在Windows計算機上,這就是注冊表。
getClass().getResourceAsStream(path);
是正確的方法。 你的屬性文件需要你的JAR文件中打包,並(如上使用)的路徑應該匹配的jar文件中的屬性文件路徑。
請注意,您不會對此進行編寫。 如果您要包裝一個罐子,那么它(就所有意圖和目的而言)都是不可變的。
來自ClassLoader的javadocs
getResourceAsStream返回
用於讀取資源的輸入流;如果找不到資源,則為null
不要嘗試將資源寫回到Jar文件中。 歸檔文件通常由JVM鎖定。
而是將新選項序列化到本地文件系統上的某個位置(有許多選項可以實現此目的),並在默認為內部屬性之前檢查更改的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.