Program do kopiowania pliku

0

Witam,

moim celem jest napisanie pliku który będzie kopiował określony plik zawarty w jar.

Napisałem już funkcję która kopiuje pliki. Teraz muszę jakoś dodać mój plik do .jar i podać ścieżkę do niego.

Kopiuję za pomocą :

copy("C:\\test2\\MOJ_PLIK.tx", "C:\\test2\\test.txt"); 

Pytanie - jaką ścieżkę podać do pliku zawartego w .jar ?

pozdrawiam serdecznie
Bartek

0

URL do pliku w Jarze możesz pobrać za pomocą ClassLoader.getResource, ale dla Ciebie pewnie bardziej użyteczna będzie metoda ClassLoader.getResourceAsStream, gdyż daje ona od razu strumień do odczytu.

http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html#getResource%28java.lang.String%29
http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html#getResourceAsStream%28java.lang.String%29

0

Cześć __krzysiek85 !

Dzięki za odpowiedz.
Zrobiłem tak :

String adress = Main.class.getClassLoader().getResource("test.txt").toString();

Niestety nie jest to takie proste. Dodało prefiks - file:/ . Usunąłem go za pomocą :

adress = adress.substring(10);

Dostałem błąd :

FileCopy: no such source file: C:/Users/brt/Documents/NetBeansProjects/Converter.jar!/test.txt

Myślałem, że to wina "/" więc zamieniłem na "" za pomocą :

adress = adress.replace('/', '\\');

Jakieś sugestie ?

pozdrawiam
Bartek

0

Sugestia jest taka, abyś użył metody getResourceAsStream, która da Ci od razu InputStream do pliku w środku jara.

getResource jest w zasadzie tylko przydatny do tego, aby upewnić się, że używamy odpowiedniego pliku. Dostanie się do pliku w jarze "na piechotę" na podstawie URLa jest trudne (ale możliwe dzięki klasie JarFile).

Przy okazji - getResource/getResourceAsStream działają też gdy pliki są w classpath, ale gdy jeszcze nie zbudowałeś jara, np. wtedy gdy uruchamiasz projekt bezpośrednio z Eclipse'a.

0

Jak już będziesz miał input i output stream to polecam:
http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/util/Streams.html#copy%28java.io.InputStream,%20java.io.OutputStream,%20boolean%29

Streams.copy(inputStream, outputStream, true); 

i po bólu

1 użytkowników online, w tym zalogowanych: 0, gości: 1