簡體   English   中英

JAVA:FileInputStream和FileOutputStream

[英]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();
}

並檢查以下網址

getResourceAsStream()vs FileInputStream

請參閱此問題: 如何將文件保存到類路徑

這個答案https://stackoverflow.com/a/4714719/239168

總結:你不能總是簡單地保存從類路徑讀取的文件(例如jar中的文件)

但是,如果它確實只是類路徑上的一個文件,那么上面的答案有一個很好的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM