[英]JAVA: FileInputStream and FileOutputStream
我對輸入和輸出流有這個奇怪的事情,我只是無法理解。 我使用inputstream從這樣的資源中讀取屬性文件:
Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream( "/resources/SQL.properties" );
rop.load(in);
return prop;
它找到我的文件並成功更新它。 我嘗試寫這樣的修改設置:
prop.store(new FileOutputStream( "/resources/SQL.properties" ), null);
我收到奇怪的錯誤:
java.io.FileNotFoundException: \resources\SQL.properties (The system cannot find the path specified)
那么為什么改變物業的道路呢? 如何解決這個問題? 我在Windows上使用Netbeans
問題是getResourceAsStream()
正在解析相對於類路徑的路徑,而new FileOutputStream()
直接在文件系統中創建文件。 他們有不同的起點。
通常,您無法回寫加載資源的源位置,因為它可能根本不存在於文件系統中。 例如,它可能位於jar文件中,JVM不會更新jar文件。
可能是有效的
try
{
java.net.URL url = this.getClass().getResource("/resources/SQL.properties");
java.io.FileInputStream pin = new java.io.FileInputStream(url.getFile());
java.util.Properties props = new java.util.Properties();
props.load(pin);
}
catch(Exception ex)
{
ex.printStackTrace();
}
並檢查以下網址
請參閱此問題: 如何將文件保存到類路徑
這個答案https://stackoverflow.com/a/4714719/239168
總結:你不能總是簡單地保存從類路徑讀取的文件(例如jar中的文件)
但是,如果它確實只是類路徑上的一個文件,那么上面的答案有一個很好的方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.