Java dekompresja pliku i odczytanie informacji w nim

0

Mam plik, który wybieram JFileChooser, ma on nazwę name.txt.gz mam go w locie rozpakować i najlepiej interesujące mnie informacje w odpowiednich linijkach w pliku zapisać do zmiennych. Będę wdzięczny za pomoc jak tego dokonać
na razie mam tyle:

BufferedReader in = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(fc.getSelectedFile()))));
				// i tu chciałbym przeczytać interesujące mnie linijki 
				in.close();
1
String currentLine;
while ((currentLine = in.readLine()) != null) {
	//tutaj czytasz linijka po linijce. Sprawdź co jest aktualnie w currentLine i zapisz do odpowiedniej zmiennej wg tego co chcesz zrobić
}
0

Właśnie nie wiem dlaczego ale ten warunek w pętli zupełnie nie działa tzn nie wykonuje się ani raz

0

Po zakomentowaniu tych 2 linijek działa

numberOfBalls = Integer.parseInt(in.lines().skip(0).findFirst().get());
numberOfParts = (int) in.lines().count() - 2;

Dlaczego?

1

Bo czytając linijkę ze streama jednocześnie przeskakujesz do następnej. Dlatego w moim przykładzie, kiedy używam readLine() to od razu zapisuje ją do zmiennej. W innym wypadku "straciłbym" tę linijkę

0

Super, dzięki za wyjaśnienie.Jeśli potnę te linijki po spacji:

String[] out;
				while((s = in.readLine()) != null) {
					System.out.println("ok");
					if(line > 1) {
						out = s.split(" ");
						for(int j =0; j<out.length; j++) {

o w jaki sposób sprawdzić czy out[j] jest typu double czy int?

1

Np poprzez:

Integer.parseInt(out[j]);
Double.parseDouble(out[j]);

W tej kolejności.

Jeśli parseInt rzuci wyjątek to znaczy, że nie udało się tego co jest pod out[j] przeparsować na inta - czyli to może być double albo np "dupa". Następnie sprawdzasz to samo dla doubla - jeśli rzuci wyjątek to znaczy, że to nie jest również double

0

Dzięki wielkie za pomoc :)

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