2012-05-08 8 views
6

Mam tę dziwną rzecz ze strumieniami wejściowymi i wyjściowymi, których po prostu nie mogę zrozumieć. używam InputStream czytać właściwości pliku z zasobów tak:JAVA: FileInputStream i FileOutputStream

Properties prop = new Properties(); 
InputStream in = getClass().getResourceAsStream("/resources/SQL.properties"); 
rop.load(in); 
return prop; 

Okazuje mój plik i reds go pomyślnie. Staram się pisać ustawienia zmodyfikowany tak:

prop.store(new FileOutputStream("/resources/SQL.properties"), null); 

I coraz dziwny błąd przechowywanie:

java.io.FileNotFoundException: \resources\SQL.properties (The system cannot find the path specified) 

Więc dlaczego droga do właściwości zostały zmienione? Jak to naprawić? Używam Netbeans na Windows

+1

Witamy SO. +1 dla dobrze sformułowanego pytania z wszystkimi odpowiednimi informacjami. –

Odpowiedz

3

Może być to działa

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

i sprawdzić poniższy link

getResourceAsStream() vs FileInputStream

+0

Próbując tej metody, napiszę wkrótce, jeśli zadziałało – gedO

+0

To zadziałało dla mnie :) – gedO

6

Problemem jest to, że getResourceAsStream() jest rozwiązywanie ścieżkę dajesz go w stosunku do ścieżki klasy, natomiast new FileOutputStream() tworzy plik bezpośrednio w systemie. Mają różne punkty początkowe dla ścieżki.

Zasadniczo nie można pisać z powrotem do lokalizacji źródłowej, z której został załadowany zasób, ponieważ może on w ogóle nie istnieć w systemie plików. Może na przykład znajdować się w pliku JAR, a JVM nie zaktualizuje pliku JAR.

+1

Czy możesz dać mi przykład, jak napisać to w poprawny sposób? – gedO

+0

Nie można zapisać poprawnie. Zazwyczaj nie można zapisać w lokalizacji, z której załadowano zasób. Może nie istnieć w zapisywalnej lokalizacji. –

+0

+1, ponieważ to doskonale tłumaczy, dlaczego mam ten problem. – nathj07

Powiązane problemy