Datei einlesen und splitten nur zeilenweise

Status
Nicht offen für weitere Antworten.

auxilium

Mitglied
hallo ,

ich habe eine Date mit folgendem Inhalt:

Hans,Manuel,Josef,Marco
Carsten,Daniel,Manuel,Marco

und möchte jeweils die Daten aus einer Zeile in ein Array, hier in dem Fall hätte ich also 2 Arrays.

Habe das aber nur mit einem Array hinbekommen :-( und leider weiß ich auch nicht, wie viele Elemente ins Array sollen


Code:
import java.io.FileReader;
import java.io.IOException;

public class FileRead {

	/**
	 * @param args
	 * @throws IOException
	 */
		public static void main(String[] args) throws IOException {

		FileReader reader;

		// Read file
		reader = new FileReader("replace.txt");
		int zeichen;
		String ausgabe = "";
		while ((zeichen = reader.read()) != -1) {

			ausgabe += "" + (char) zeichen;
		}
		String[] test = ausgabe.split("/n");
		System.out.println(ausgabe);

		String[] werte;
		String [] werte2 = new String[20];
		int i3 = 0;

		int i = 0;
		while (i <= test.length - 1) {

			werte = test[i].split(",");
			int i2 = 0;
			while (i2 <= werte.length - 1) {
				werte2[i3]=werte[i2];
				i3++;
				i2++;
			}
		
			i++;

		}
		i = 0;
		while (i<werte2.length){
			System.out.println(werte2[i]);
			i++;
			
		}

	}

}
 
S

SlaterB

Gast
der Zeilenumbruch ist \n, nicht /n

mit einem BufferedReader und readLine() bekommst du die Zeilen frei Haus zeilenweise geliefert,
jeden Buchstaben einzeln zu lesen ist unnötig aufwendig und auch langsam(er)

wenn du ein ein Array splittest, dann hast du String[] werte = ..;

dieses Array kannst du nun in ein anderes schreiben:
String[][] alleZeilen = ..;
alleZeilen[3] = werte;

> und leider weiß ich auch nicht, wie viele Elemente ins Array sollen

verwende zunächst eine dynamische Datenstruktur wie eine ArrayList,
da passen beliebig viele rein,
am Ende weißt du wieviele es sind und kannst sie in ein passend großes Array umschaufeln
(oder die fertige toArray()-Operation verwenden)
 

Wildcard

Top Contributor
ArrayList würde ich nicht empfehlen, da je nach länge der Datei sehr oft das Array umkopiert werden muss. Das brauchst Speicher und ist langsam. Besser eine LinkedList, oder (wenn die Reihenfolge egal ist und keine Duplikate vorhanden sind) ein HashSet.
 

auxilium

Mitglied
Code:
	FileReader reader;
		ArrayList<String> zeilen = new ArrayList<String>();
		ArrayList<String>ausgabe = new ArrayList<String>();
		
	LineNumberReader test = new LineNumberReader(new FileReader("replace.txt"));
		String lesen;
	while ((lesen = test.readLine())!=null){
		zeilen.add(lesen);
	}
int i = 0;	
while(i<zeilen.size()){
	System.out.println(zeilen.get(i));
ARRAY MIT BESTIMMTEM WERT =	zeilen.get(i).split(",");

	i++;
}

also habs mit dem LineNumberReader versucht der ist klasse.

Beim splitten habe ich allerdings ein problem, weil ich nicht weiß, in wie viele Teile das aufgesplittet wird.

Aber ich muss daas Array entsprechend festlegen.

eine SPlit Methode für eine Arraylist gibt es nicht, da hätte ich das problem nicht?
 
S

SlaterB

Gast
nein, du musst das Array nicht vorher initialisieren,

String[] werte = zeilen.get(i).split(",");
dann ist werte ein neues Array genau der richtigen Größe, das macht split()

> eine SPlit Methode für eine Arraylist gibt es nicht, da hätte ich das problem nicht?

die Liste ist nur zum Sammeln der werte-Array pro Zeile,
da musst du nix splitten?

---------



Offtopic @Wildcard:
hmm, eine kühne Behauptung, gleich mal testen,

zumindest das HashSet, also eine HashMap, hat doch genauso wie die ArrayList eine initiale Größe von 16, die dann ständig verdoppelt wird?

bleibt noch die Frage der LinkedList,
was stören da die paar Verdopplungen? gerademal 20 Verdopplungen bei einer Mio. Elementen, warum soll das was ausmachen?
dagegen für LinkedList 1 Mio. Hilfsobjekte erzeugen..

was meinst du mit 'je nach länge der Datei'? ich denke mal bei höherer Länge liegt die ArrayList besser, da die Anzahl der Verdopplungen abnimmt

Code:
public class Test
{
    static int k = 1000;

    public static void main(String[] args)
        throws Exception
    {
        String[] items = new String[10000];
        for (int i = 0; i < items.length; i++)
        {
            items[i] = "" + i;
        }
        buildUpArrayList(items);
        buildUpLinkedList(items);
        buildUpArrayList(items);
        buildUpLinkedList(items);
        buildUpArrayList(items);
        buildUpLinkedList(items);

    }

    public static void buildUpArrayList(String[] items)
    {
        long time = System.currentTimeMillis();
        for (int i = 0; i < k; i++)
        {
            List l = new ArrayList();
            for (String st : items)
            {
                l.add(st);
            }
        }
        System.out.println("time AL: " + (System.currentTimeMillis() - time));
    }

    public static void buildUpLinkedList(String[] items)
    {
        long time = System.currentTimeMillis();
        for (int i = 0; i < k; i++)
        {
            List l = new LinkedList();
            for (String st : items)
            {
                l.add(st);
            }
        }
        System.out.println("time LL: " + (System.currentTimeMillis() - time));
    }
}


--------

time AL: 469
time LL: 2156
time AL: 454
time LL: 2078
time AL: 468
time LL: 2110

bei 100 Elementen kann LinkedList noch mithalten, bei 10000 dann eher weniger,

der Platzvorteil bleibt natürlich optisch ungenommen,
allerdings nur, wenn die zusätzlichen LinkedList-Entry-Objekte nicht die schmalen 4 Byte im Array übertreffen

bei
Code:
  private static class Entry<E> {
	E element;
	Entry<E> next;
	Entry<E> previous;
}
siehts da wohl auch düster aus für LinkedList, aber habe ich mal nicht getestet ;)
 

zilti

Bekanntes Mitglied
Der Zeilenumbruch ist nicht /n, nicht \n sondern System.getProperty("line.separator"); .
 

Wildcard

Top Contributor
@SlaterB
Worum es mir eigentlich geht ist, dass IMO zu oft die ArrayList vorgeschlagen wird. Jede Collection hat ihre eigenen Vor- und Nachteile. Ich verwende die ArrayList beispielsweise kaum.
Bei wahlfreiem Zugriff nehme ich wo immer möglich ein HashSet, weil die Zugriffszeiten besser sind.
Bei sequentiellem Zugriff, oder wahlfreiem einfügen/entfernen nehme ich die LinkedList.
Die ArrayList ist die Notlösung, wenn nichts anderes passt, seltsamerweise wird sie hier bei praktisch jedem Problem vorgeschlagen. ???:L
 
S

SlaterB

Gast
das liegt nunmal daran, dass ArrayList eben nicht eine Notlösung ist,
sondern das Beste, was man sich wünschen kann, wenn man eigentlich ein Array braucht ;)

siehe meine Tests/ Erläuterungen,
wenn du Argumente dagegen hast, dann kannst du sie ja nennen,

LinkedList ist nur gut bei ständigen Einfügen/ Entfernen, was ich praktisch noch nie gebraucht habe,
ArrayList dagegen 10x am Tag..

eine Menge von Elementen ohne vorher die Anzahl zu kennen, sogar noch mit Reihenfolge und schnellstmöglichen Index-Zugriff,
schlicht, gut, perfekt

Set und Map kommen eh nicht in Frage, haben Sonderaufgaben (Doppelte, Key-Zugriff)
und damit für normale Zwecke unnötigen Overhead/ Speicheraufwand/ Verlangsamung

edit: falls Umfragen/ Anwendungen noch überzeugen:
Hibernate liefert bei Anfragen ArrayLists zurück ;)

edit2: und immerhin gabs ja früher nur Vector, also ArrayList, und LinkedList noch gar nicht,
alles spricht für ArrayList, wie kann man was anderes vermuten?

edit3:
ach halt, beim sequentiellen Durchlauf ist die LinkedList schneller,
ich meine, das wurde schon mal in einem Thread hier besprochen,

ja das ist dann ein gutes Argument, wenn man eine Liste öfters durchläuft, dann kann LinkedList auftrumpfen ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
M Methoden Datei einlesen und als return übergeben. Java Basics - Anfänger-Themen 8
P CSV Datei einlesen und damit ein Datenmodell befüllen Java Basics - Anfänger-Themen 2
N Datei einlesen und grafisch anzeigen Java Basics - Anfänger-Themen 31
P csv Datei einlesen und ausgeben Java Basics - Anfänger-Themen 5
J Text Datei einlesen Java Basics - Anfänger-Themen 6
N gerichteter Graph aus einer Datei einlesen Java Basics - Anfänger-Themen 21
E Datei einlesen und bestimmte Wörter ausgeben Java Basics - Anfänger-Themen 2
Z Erste Schritte Versuche ein Labyrinth in einem Terminal zu erstellen, aber kann die properties Datei nicht einlesen Java Basics - Anfänger-Themen 3
J Encoding Problem beim Einlesen einer txt Datei mit Umlauten Java Basics - Anfänger-Themen 3
V Excel Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 4
stylegangsta Input/Output Hat eclipse eine Macke oder mein Code Array Datei einlesen Java Basics - Anfänger-Themen 5
N Mehrdimensionales float Array aus .txt-Datei einlesen? Java Basics - Anfänger-Themen 17
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
J CSV Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 10
I BufferedReader Text-Datei einlesen??? Java Basics - Anfänger-Themen 1
S Datei einlesen - Dateipfad unter Linux anpassen Java Basics - Anfänger-Themen 12
A Datei in Array einlesen Java Basics - Anfänger-Themen 6
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
Ananaskirsche Input/Output Bestimmte Zeile aus Datei einlesen Java Basics - Anfänger-Themen 4
J .txt Datei "einlesen "und in String speichern ergibt immer NULL Java Basics - Anfänger-Themen 17
M CSV-File aus datei system einlesen Java Basics - Anfänger-Themen 3
B Datei in Java einlesen Java Basics - Anfänger-Themen 13
S Datei einlesen und ausgeben Java Basics - Anfänger-Themen 8
S Input/Output einlesen aus einer evtl. leeren Datei Java Basics - Anfänger-Themen 5
J Input/Output Datei - Zeilenumbruch einlesen Java Basics - Anfänger-Themen 10
H config Datei erstellen + einlesen Java Basics - Anfänger-Themen 15
F Datei einlesen ( Bytes ) Java Basics - Anfänger-Themen 12
T Klassen CSV datei einlesen und parsen Java Basics - Anfänger-Themen 4
U Datei einlesen Java Basics - Anfänger-Themen 9
S ANSI-Datei einlesen UND UTF-8-Datei schreiben Java Basics - Anfänger-Themen 3
M Datei einlesen mit generics? Java Basics - Anfänger-Themen 9
I Datei einlesen, Inhalt in MAP ablegen Java Basics - Anfänger-Themen 10
A Erste Schritte Datei einlesen und Buchstaben zählen Java Basics - Anfänger-Themen 13
D txt-Datei zeilenweise als String einlesen Java Basics - Anfänger-Themen 2
E JPane txt datei einlesen Java Basics - Anfänger-Themen 5
D RegExp .txt-Datei einlesen Java Basics - Anfänger-Themen 6
M Datei Einlesen Fortan-Style? Java Basics - Anfänger-Themen 3
A Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 5
S Datei einlesen Java Basics - Anfänger-Themen 21
D Datei einlesen Fehler Java Basics - Anfänger-Themen 17
A Beim txt Datei einlesen kommen zusätzliche Lehrzeichen dazu. Java Basics - Anfänger-Themen 5
H eine Datei schnellstmöglich einlesen Java Basics - Anfänger-Themen 12
0 Log4J Probleme beim einlesen der Log datei Java Basics - Anfänger-Themen 2
E Input/Output Linux datei in Windows zeilenweise einlesen Java Basics - Anfänger-Themen 4
S XML Datei einlesen und Elemente ausgeben Java Basics - Anfänger-Themen 4
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
S Datenströne - Text in eine Datei einlesen, umwandeln und in eine neue Datei schreiben Java Basics - Anfänger-Themen 6
E externe .txt Datei mit Scanner einlesen Java Basics - Anfänger-Themen 7
N Input/Output .txt-Datei einlesen, aufteilen und seperat abspeichern Java Basics - Anfänger-Themen 3
L Datei einlesen Java Basics - Anfänger-Themen 12
L Input/Output Datei in Java einlesen Java Basics - Anfänger-Themen 9
J Datei einlesen Java Basics - Anfänger-Themen 10
I .csv-Datei einlesen klappt aber kann nicht in String geschrieben werden!?!?! Java Basics - Anfänger-Themen 11
S Datei einlesen und Ergebnis wieder in Datei schreiben Java Basics - Anfänger-Themen 5
J Datei einlesen teile aus lines ändern und wieder rausschreiben. Java Basics - Anfänger-Themen 4
B Wertetabelle mit versch. Formaten aus txt-Datei einlesen Java Basics - Anfänger-Themen 2
H 200000 Zeilen aus Datei einlesen Java Basics - Anfänger-Themen 13
D CSV Datei einlesen und verarbeiten Java Basics - Anfänger-Themen 23
J byteweise Einlesen einer Datei "Von.. bis.." Java Basics - Anfänger-Themen 3
J Einlesen/Speichern von Strings aus einer Datei Java Basics - Anfänger-Themen 15
Z CSV-Datei einlesen mit dem JFileChooser !!! Java Basics - Anfänger-Themen 5
H Einlesen einer CSV-Datei Java Basics - Anfänger-Themen 2
X einlesen aus Datei, Fehler Java Basics - Anfänger-Themen 9
S Einlesen einer Datei? Java Basics - Anfänger-Themen 9
L Datei einlesen und neu geändert ausgeben Java Basics - Anfänger-Themen 8
B Formel aus Datei einlesen und benutzen Java Basics - Anfänger-Themen 3
C Datei einlesen Java Basics - Anfänger-Themen 19
H Datei einlesen in einer MVC Anwendung Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben