Plik - gdzie umieścic?

0

Mam napisać program ktory odczytuje zawartość pliku. Jak napiszę tak

FileReader czyt = new FileReader("test.ppp");

To gdzie mam wstawić taki plik?
Dodam, że piszę to w Eclipsie.

0

W ten sposób to w głównym kataogu projektu.

0

a jakbym zrobił z tego jar'a to wtedy gdzie ten plik umieścić??

0

w katalogu z jarem, ale znacznielepszym sposobem jest dostęp przez:

new File(new URI(Object.class.getClassLoader().getResource("").getPath()));

Trochę kombinowany, bo Od razu robi File, ale generalnie działa.

ps. dokładny opis dam wieczorkiem.

0

@Koziołek, pytanie powiązane. Swego czasu wojowałem z pakietem javax.comm do obsługi portów szeregowych, pakiet ten wymaga by w katalogu .../lib/ext znajdował się plik javax.comm.properties. Problem pojawił się wtedy gdy moje klasy oraz pakiet javax.comm skleiłem do jednego jara. Umieszczałem plik javax.comm.properties w najróżniejszych miejscach - program tego pliku nie widział.
Lekarstwem okazała się zamiana pakietu javax.comm na bibliotekę RXTXcomm.jar.

0

@bogdans, pakiet javax.comm jak i kilka innych pakietów maja tą nieprzyjemną właściwość, że trzeba je tak naprawdę wrzucać do endosed, lib/ext lub innej ściśle przez suna określonej lokalizacji. Tworzy to taki własni problem jak dystrybuować soft w postaci jednej paczki. Zazwyczaj można metodą prób i błędów w trakcie testów określić o co dokładnie sunowi chodziło i przy pierwszym uruchomieniu programu odpowiednio potworzyć pliki wraz z zawartością.
Tym przypadku to powino wyglądać jakoś tak:

\program
  |-\lib
  |     |-\ext
  |     |       |-javax.comm.properties
  |-\jar
  |     |-program.jar

Można też spróbować poszukać jak konfiguruje się ten pakiet.

0
Koziołek napisał(a)

w katalogu z jarem, ale znacznielepszym sposobem jest dostęp przez:

new File(new URI(Object.class.getClassLoader().getResource("").getPath()));

Trochę kombinowany, bo Od razu robi File, ale generalnie działa.

ps. dokładny opis dam wieczorkiem.

Ciągle czekam na dokładny opis:)

0

zależy kto co rozumie przez wieczór ;)

Ok pełny przykład:

package programmers.net.zasoby118979;

import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;

public class ShowJarResources {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws URISyntaxException 
	 */
	public static void main(String[] args) throws IOException, URISyntaxException {
		URL url = ShowJarResources.class.getResource("plik.txt");
		URI uri = new URI(url.getFile());
		File file = new File(uri.getPath());
		System.out.println(file.getAbsolutePath());
	}

}

plik.txt znajduje się w tym samym katalogu co plik class. Wynikiem będzie:

D:\workspace\4programmers\zasoby.jar!\programmers\net\zasoby118979\plik.txt

Wystarczy zatem dopisać sobie klasę narzędziową, która będzie konfigurowała ścieżkę i tyle. Można też bardziej bezczelnie podejść do problemu i zamiast plik.txt podaj nazwę pliku class. Wtedy na pewno plik zostanie odnaleziony i nie poleci żaden NullPointerException

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