Wrong language? Choose different language instead:

close
Android Forum » Android Developer Forum » Android Entwickler Forum » wie lese ich ein CSV File in meiner App

wie lese ich ein CSV File in meiner App

wie lese ich ein CSV File in meiner App
verfasst am 06.08.2010 22:37:50
Hallo zusammen,

Ich weiss wie man in Java ein CSV normalerweise liest, aber in meiner App schaff ich das nicht. D.h. ich weiss nicht mit welcher Methode ich das File öffnen kann, wenn ich es zum Beispiel in den Assets-Folder stelle.

Ein Einzeiler mit der richtigen Methode und dem richtigen Pfadangabe eines Beispiels würde mir sehr helfen.

Grüsse
mcfly

-----
WorldHistory auf Android OS. https://market.android.com/details?id=solveraapps.chronicbrowser&feature=search_result

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: wie lese ich ein CSV File in meiner App
verfasst am 07.08.2010 13:37:41 — geändert am 07.08.2010 13:42:15
Hi,

leg die CSV-Datei mal (ohne die Dateiendung .csv) in den Ordner /res/raw/ und greif das wie folgt darauf zu:


InputStream in = activity.getResources().openRawResource(csv-dateiname);
BufferedInputStream bis = new BufferedInputStream(in);
DataInputStream dis = new DataInputStream(bis);

try {
while (dis.available() != 0) {

// Auslesen einer Zeile
String row = dis.readLine();

// Bei mir hat die CSV-Datei 6 Columns
String[] datensatz = new String [6];

// Mit der Klasse Scanner kannst Du den Delimiter festlegen und die einzelnen Zeilen auslesen
Scanner scan = new Scanner(row);
scan.useDelimiter(";");

int i = 0;
while(scan.hasNext()){
datensatz[i] = scan.next();
i++;
}
}
} catch (IOException e) {
e.printStackTrace();
}


Mh, irgendwie lässt sich mein Code nicht im Code-Block darstellen.

Hoffe ich konnte Dir weiterhelfen.

Viele Grüße
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: wie lese ich ein CSV File in meiner App
verfasst am 07.08.2010 13:51:47
Leider stinkt der Code,


while (dis.available() != 0) {

Hier kann es passieren das sofort 0 geliefert wird, die Java Doc sagt dazu:

Returns the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method for this input stream. The next caller might be the same thread or or another thread.

The available method for class InputStream always returns 0.

This method should be overridden by subclasses.

Besser ist mit InputStream#read zu arbeiten oder direkt die Methode #readLine, du machst aber beides was keinen Sinn ergibt!

Gruss von den Kanaren,
Mac

-----
Neu : Windmate HD | Bin auf der Google I/O anzutreffen

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: wie lese ich ein CSV File in meiner App
verfasst am 07.08.2010 14:08:21
Besser ist mit InputStream#read zu arbeiten oder direkt die Methode #readLine, du machst aber beides was keinen Sinn ergibt!
Danke für den Tipp, werds mir merken.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: wie lese ich ein CSV File in meiner App
verfasst am 07.08.2010 22:26:08 (über AndroidPIT-App)
vielen dank . ich werds bald ausprobieren. danke

-----
WorldHistory auf Android OS. https://market.android.com/details?id=solveraapps.chronicbrowser&feature=search_result

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: wie lese ich ein CSV File in meiner App
verfasst am 09.08.2010 12:34:40 — geändert am 09.08.2010 12:35:51
Der Vollständigkeit halber:


InputStream in = activity.getResources().openRawResource(naehrwert);
BufferedInputStream bis = new BufferedInputStream(in);
DataInputStream dis = new DataInputStream(bis);

String row = null;

try {
while ((row = dis.readLine()) != null) {

// Bei mir hat die CSV-Datei 6 Columns
String[] datensatz = new String [6];

// Mit der Klasse Scanner kannst Du den Delimiter festlegen und die einzelnen Zeilen auslesen
Scanner scan = new Scanner(row);
scan.useDelimiter(";");

int i = 0;
while(scan.hasNext()){
datensatz[i] = scan.next();
i++;
}
}
} catch (IOException e) {
e.printStackTrace();
}


Besser so, MacSystems? :)
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
RE: wie lese ich ein CSV File in meiner App
verfasst am 11.12.2012 19:33:04 — geändert am 11.12.2012 20:52:34
Hallo Community..

Vielen Dank erstmal im voraus...

Habe den Code so angewendet wie er hier steht. Ich habe eine CSV Datei ( Dateiname .CSV dann entfernt ) in meinen Android Projekt.
Wie kann ich erreichen, dass ich eine bestimmt Zeile auslesen kann ?
Er liest immer nur die letzte Zeile ( meiner CSV Datei aus dem RAW Verzeichnis, die 4 Zeilen hat ).
Meine CSV Datei hat immer 7 Spalten.
Die kann ich super mit den Datensätzen ausgeben ( leider immer nur die letzte Zeile in der Datei ).

.....
String datensatz0 = datensatz[0];
String datensatz1 = datensatz[1]; // und so weiter
test_ausgabe.setText( String.valueOf(datensatz0)+String.valueOf(datensatz1) ....);
.....


Ich würde aber gerne eine bestimmte Zeile aus meiner CSV Datei nutzen, und die Datensätze dann daraus ausgeben wollen.

Für mich klar ist, wenn es heißt : while ((Zeile = in.readLine()) != null) { ....
--> dass er solange macht bis die nächste Zeile leer ist, und dann das zuvor nimmt

Brauche ich noch eine 8. Spalte, die vielleicht ein Zeichen enthält wie : ENDL ? Damit readLine() erkennt, dass dann die Zeile zuende ist ?


LG , wäre dankbar um Hilfe...
Habe jetzt schon ewig gesucht und probiert.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
Ähnliche Beiträge: Liste meiner gekauften Apps