Skocz do zawartości
szamot

problem z wczytaniem pliku do parsowania

Rekomendowane odpowiedzi

szamot

Witam

Potrzebuję wczytać plik csv dołączony do apki, by go następnie sparsować. Przekopując google (na metr w głąb) znalazłem dwa sposoby: jeden umieszczenie pliku w katalogu assets, drugi w drawable. Próbowałem zrobić to w ten pierwszy sposób i wrzuciłem do metody onCreate() coś takiego:

       try {
	getAssets().open(csvFilename);
	Log.i(DEBUG_TAG, "Pierwsza");
} catch (IOException e1) {		
	e1.printStackTrace();
}
try {
	new CSVReader(new FileReader(is));
	Log.i(DEBUG_TAG, "Druga");
} catch (FileNotFoundException e) {		
	e.printStackTrace();
}
try {
	CSVReader.readAll();
} catch (IOException e) {
	Log.i(DEBUG_TAG, "Trzecia");
	e.printStackTrace();
}

jednak przed drugim Logiem wyłącza mi VM, a druga sprawa to korzystam z biblioteki opencsv-2.3 i eclipse chce zmienić w

CSVReader.readAll();

readAll() na static, czego nie można zrobić bo cała biblioteka się pójdzie kochać, a bez tego apka nie pójdzie. Wie ktoś gdzie robię błąd?

Z góry dzięki za pomoc.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
bozon

Jak czytam takie posty to aż płakać się chce (głównie ze śmiechu), na początek rada: jak masz zamiar zarabiać programowaniem na życie to zastanów się nad przekwalifikowaniem. To co chcesz zrobić powinno wyglądać tak:

InputStream is = null;
List<String[]> csvContent = null;
try {
 is = getAssets().open(fname);
 CSVReader csv = new CSVReader(new InputStreamReader(is));
 csvContent = csv.readAll();
} catch (IOException e) {
 // handle
 e.printStackTrace();
} finally {
 if (null != is) {
   try { is.close() } catch (IOException e) {}
 }
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
szamot

Przemyślę to jak będę musiał wybrać sobie studia, a na razie będę próbował ogarnąć jave i androida, ale dzięki za poradę. Teraz oczywiście działa, dzięki za pomoc. Temat do zamknięcia.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
bozon

A jak jeszcze jestes "przed" studiami to nie jest źle, w takim wypadku nawet Ci napisze co robileś źle: funkcje (tak samo jak w matematyce) zwracaja wyniki, który trzeba gdzieś zapisać, jak pisałeś getAssets().open(fname) bez przypisania to wyniki (otwarty "plik") sobie gdzieś znikał, to samo robileś z tym parserem CVS.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.


  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.