Odczytanie konkretnej linii z pliku csv

Odczytanie konkretnej linii z pliku csv
JP
  • Rejestracja:około 6 lat
  • Ostatnio:około 5 lat
  • Postów:27
0

Potrzebuje odczytać drugą linię z pliku csv, wiem, że jest ona zawsze pusta. W momencie kiedy sprawdzi ją, że jest pusta należy wykonać jakąś akcję na przykład system.out.println("dziala");
Ma ktoś jakiś pomysł? Próbowałem tak jak poniżej, ale neistety dla pustych wartości nie chce to działać.

Kopiuj
String[] strArray1 = Files.lines(myPath)
						.skip(1)
					    .map(s -> s.split(" "))
					    .findFirst()
					    .get();

Chodzi o to żeby jakoś zrobić to przy pomocy ifa, żeby się można było dobić do środka pętli i wykonać jakąś akcje:

Kopiuj
if(Files.readAllLines(Paths.get(plik)).get(1) == " ")
edytowany 3x, ostatnio: flowCRANE
K5
  • Rejestracja:około 6 lat
  • Ostatnio:około 21 godzin
  • Postów:1002
0

Nie bardzo rozumiem gdzie jest problem.

Kopiuj
List<String> linesFromFile = Files.readAllLines(path);

to zwraca Ci wszystkie linie z pliku jako listę stringów (każdy string to wczytana linia).

Kopiuj
linesFromFile.get(1)

tak dobierasz się do 2 linii.

tomek1221
To ma sens pod warunkiem, że pliku nie ma kilku GB ;)
K5
Tak wiem, bo wczytywane jest od razu jako całość do pamięci. Ale autor posta już wcześniej wstawiał podobne posty, gdzie operował na bardzo krótkich plikach. Więc założyłem, że tym razem jest podobnie :)
tomek1221
Spoczko, tak tylko chciałem wspomnieć żeby ktoś nie próbował tego na większych plikach, wbrew pozorom wiele osób nie zdaje sobie z tego sprawy :p
JP
  • Rejestracja:około 6 lat
  • Ostatnio:około 5 lat
  • Postów:27
0
Kopiuj
Path path = Paths.get(plik);
		List<String> linesFromFile = Files.readAllLines(path);
		if(linesFromFile.get(1) == " ")
			System.out.println("nie dziala");
		else
			System.out.println("nie dziala");

Ok, niestety dalej mi to nie działa. W pliku csv mam tylko pierwszą linie zapisaną druga jest pusta. A chodzi mi o to żeby wszedł do pierwszego ifa

edytowany 1x, ostatnio: flowCRANE
Zobacz pozostałe 2 komentarze
K5
Jak wygląda ten plik? A błąd to mam zgadywać jaki otrzymujesz? :)
DR
@Jan_Programista82: jesteś pewny że jest ta 2 linia?
JP
Na błąd się nie patrz, on wynika z tego, że próbuje się dostać do tego ifa w dalszej części kodu, ale nie mogę się dobrać do tej pustej linii teraz. Plik to nic specjalnego. W pierwszej linii liczba powiedzmy 428 i ,,; '' na końcu linii. Chce mieć potwierdzenie tylko, że druga linia jest pusta bo jest mi to potrzebne do zadania.
K5
Wrzuć ten plik gdzieś, bez tego dalej nie pójdziemy.
AK
w Javie == nie porównuje stringów, wbrew pozooron
JP
  • Rejestracja:około 6 lat
  • Ostatnio:około 5 lat
  • Postów:27
0

Tutaj jest plik. Tak jak mówie chce tylko potwierdzenie pustej zawartości drugiej linii, którą chce sprawdzić w ifie. Nic więcej.

edytowany 1x, ostatnio: Jan_Programista82
Zobacz pozostały 1 komentarz
JP
no od samego początku o tym pisze, że jest pusta. Chce tylko sprawdzić czy jest ona pusta bo pewnie da sie to jakoś zrobić.
K5
Nie. Tej linii NIE MA. TO nie znaczy, że ona jest pusta :) Wrzuć w 3 wiersz jakąś liczbę i wtedy wczytaj plik. Zobaczysz różnice.
JP
Ok czyli mówisz, że nie ma fizycznej metody żeby zrobić to tak jak chce? Ok, to w sumie nasunęło mi jakiś pomysł bo mam takie zadanie, które jest średnio opisane w szczegółach i dużo trzeba się domyślać, ale już wiem, gdzie tkwi kruczek. Dzięki za pomoc :)
K5
Jak chcesz sprawdzić czy plik ma tylko 1 linię, to możesz użyć linesFromFile.size() i porównać do 1. Nie da się uzyskać linii, której fizycznie w pliku nie ma. Możesz ją wygenerować zostawiając 2 wiersz pusty, a w 3 dając jakąś wartośc. Wtedy plik ma 3 linie, w którym druga jest pusta. Natomiast w wyjściowej sytuacji plik ma tylko jedną linie, drugiej nie ma w ogóle, więc ona nie może być pusta.
JP
Tak już wiem o co chodzi po prostu ta liczba jest w 1 linii jest sumą i ma średnik na końcu, ta druga jeżeli nie występuje to też powinna mieć średnik na końcu, ale niestety profesor już tego nie dopisał, ale dzięki Tobie sobie to uświadomiłem bo tak to bym się męczył i szukał. Jeszcze raz dzięki :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.