Textdatei einlesen

Conax

Mitglied
Ich habe mir mal den Code angeschaut um textdateien einzulesen. Das Programm soll einfach die textdatei zeile für zeile einlesen und dabei an jedes wort die Zahl von 1 bis 100 anhängen anhängen:

Java:
// Eine Datei wird zeichenweise abgearbeitet
import java.io.*;

public class Testzz {
  public static void main(String[] args) {
    // Einlesen des Dateinamens
    System.err.print("Dateiname?:");
    String dateiName = null;
    try 
    {
      // Dateiname : Vgl. Beispiel Anfang Kap. 5
      BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
      dateiName = b.readLine();
    } 
      catch (IOException e) 
    {
      System.err.println(e);
      return;
    }
     System.err.println("Dateiname= " + dateiName);

     // Oeffnen der Datei. Vorsicht: es koennte keine
     // Datei mit dem o.a. Namen existieren.
     BufferedReader b = null;
     try 
    {
      b = new BufferedReader(new FileReader(dateiName));
    } 
      catch (FileNotFoundException io) 
    {
      System.err.println("Datei " + dateiName + " nicht gefunden.");
      return;
    }

    // Lesen der Zeichen der Datei.
    int ch;
    for(int f = 1; f <= 100; f++)
    {
    try  
    {
      while ((ch = b.read()) != -1) 
    {
        System.out.print((char) ch);
    }
      b.close();
    } 
    catch (IOException e) 
    {
      System.err.println(e);
      return;            
    }
    
    
    	System.out.println(ch + f);
    
    }
  }
}

Wenn also in den Textdatei z.B. das Wort Apfel steht soll er dann in der Ausgabe Apfel1 Apfel2 Apfel3 .... Apfel 100 ausgeben. Deswegen habe ich das ja auch versucht in eine Schleife reinzupacken was aber wohl nicht ganz geklappt hat
 

bERt0r

Top Contributor
Was du machst, ist zu versuchen, 100 mal deine gesammte Datei auszulesen und auszugeben. Wenn du schon mal von Struktogrammen/Ablaufdiagrammen gehört hast, hilfts dir vielleicht das ganze mal aufzuzeichnen.

Für den fall, dass in Deiner datei nur ein Wort steht, und du an das dann die Zahl anhängen willst, genügt es, erst das Wort einzulesen (ein mal), in einer Variable zu speichern und dann in einer Schleife inklusive einer Zahl auszugeben.
 

obb

Mitglied
Ich hab mich mal drangesetzt und das gemacht:

Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Textzz {

	// Datei, die ausgelesen wird
	private static File file;
	
	// Diese Reader sind am Auslesen der Datei beteiligt
	private static FileReader fileReader;
	private static BufferedReader bufferedFileReader;
	
	// Gesamter Inhalt der Datei
	private static String fileContent = "";
	
	// Ein Array mit den Zeilen der Datei
	private static String[] lines;
	
	public static void main(String[] args) {
		init();
		getFileContent();
		getLines();
		printWords();
	}

	// Initialisierung der am Auslesen beteiligten Reader
	private static void init() {
		String fileName = getFileName();
		file = new File(fileName);
		try {
			fileReader = new FileReader(file);
		} catch (FileNotFoundException e) {
			System.err.println("Die Datei wurde unter dem angegebenen " +
							   "Pfad nicht gefunden.");
		}
		bufferedFileReader = new BufferedReader(fileReader);
	}
	
	// Auslesen des Dateinamens von der Standardeingabe (Konsole)
	private static String getFileName() {
		InputStream standardInputStream = System.in;
		InputStreamReader standardInputStreamReader = 
			new InputStreamReader(standardInputStream);
		BufferedReader bufferedStandardInputStreamReader =
			new BufferedReader(standardInputStreamReader);
		
		String fileName = null;
		System.out.print("Dateiname: ");
		try {
			fileName = bufferedStandardInputStreamReader.readLine();
		} catch (IOException e) {
			System.err.println("Fehler bei der Eingabe des Dateinamens.");
		}
		
		return fileName;
	}
	
	// Auslesen des Dateiinhalts
	private static void getFileContent() {
		String currentLine;
		try {
			// Der Dateiinhalt wird zeilenweise ausgelesen
			// Jede Zeile wird an den String mit dem Dateiinhalt angehängt
			// Das "\n" signalisiert einen Zeilenumbruch
			while((currentLine = bufferedFileReader.readLine()) != null)
				fileContent = fileContent + currentLine + "\n";
		} catch (IOException e) {
			System.err.println("Fehler beim Lesen der Datei.");
		}
	}
	
	// Auslesen der einzelnen Zeilen der Datei
	private static void getLines() {
		// Wir splitten den String überall wo sich ein Zeilenumbruch befindet
		lines = fileContent.split("\n");
	}
	
	// Auslesen der Wörter in den einzelnen Zeilen der Datei
	// und Ausgabe des gewünschten Textmusters auf der Standardausgabe
	private static void printWords() {
		String currentLine;
		String[] currentWords;
		int numberOfLines = lines.length;
		int numberOfWords;
		String currentWord;
		
		// Zeilenweises Durchlaufen der Datei und Extrahieren der Wörter aus
		// einer Zeile (jede Zeile wird dort gesplittet, wo sich ein
		// Leerzeichen befindet)
		for(int i = 0; i < numberOfLines; i++) {
			currentLine = lines[i];
			currentWords = currentLine.split(" ");
			numberOfWords = currentWords.length;
			
			// Jedes Wort wird nun in der gewünschten Form ausgegeben.
			for(int j = 0; j < numberOfWords; j++) {
				currentWord = currentWords[j];
				for(int k = 1; k < 100; k++)
					System.out.print(currentWord + k + ", ");
				System.out.print(currentWord + 100 + ".\n\n");
			}
		}
	}
}

Lass dich von der Länge des Codes nicht abschrecken. Ich habe versucht es wirklich Schritt für Schritt und möglichst klar herunterzuprogrammieren. Was die einzelnen Codeabschnitte tun, sollte aus den Kommentaren hervorgehen.​
Um die einzelnen Wörter mit den jeweiligen Zahlen auszugeben brauchst Du eine verschachtelte for-Schleife: Mit der äußeren Schleife gehst du die Wörter in der Datei durch. In der inneren Schleife gibst du dann das aktuelle Wort gefolgt von den Zahlen von 1 bis 100 aus.​
Noch eine Anmerkung:
Code:
System.err
verwendet man nur, um Fehlermeldungen auf der Standardausgabe auszugeben. Alles andere ist schlechter Stil. Also lieber
Code:
System.out
für die Ausgabe von Text verwenden.​
 
S

Spacerat

Gast
Ich hab mich mal drangesetzt und das gemacht:
...und ich dies ;)
Java:
import java.io.FileReader;
import java.io.StreamTokenizer;
import java.util.Map;
import java.util.TreeMap;

public final class CountWords
{
	public static void main(String[] args)
	throws Throwable
	{
		final Map<String, IntHolder> wordStats = new TreeMap<String, IntHolder>()
		{
			private static final long serialVersionUID = 1L;

			@Override
			public String toString()
			{
				StringBuilder sb = new StringBuilder();
				for(Map.Entry<String, IntHolder> e : entrySet()) {
					sb.append(e.getKey());
					sb.append(": ");
					sb.append(e.getValue());
					sb.append("\n");
				}
				return sb.toString();
			}
		};
		StreamTokenizer st = new StreamTokenizer(new FileReader("./test.txt"));
		st.ordinaryChar('.');
		int token;
		do {
			if((token = st.nextToken()) == StreamTokenizer.TT_WORD) {
				if(!wordStats.containsKey(st.sval)) {
					wordStats.put(st.sval, new IntHolder());
				}
				wordStats.get(st.sval).value++;
			}
		} while(token != StreamTokenizer.TT_EOF);
		System.out.println(wordStats);
	}

	private static final class IntHolder
	{
		private int value;

		private IntHolder()
		{
			// nothing
		}

		@Override
		public String toString()
		{
			return String.valueOf(value);
		}
	}
}
@obb: Lass dich von den wenigen Zeilen nicht schrecken. ;)
@TS: Möglicherweise müssen auch noch andere Zeichen als ordinary- bzw. wordChars markiert werden, wenn man z.B. auch Zahlen mitzählen will. Ich hoffe, dass das Lesen der Datei nicht zeilenweise geschieht, macht keine Umstände.
 
Zuletzt bearbeitet von einem Moderator:
S

Spacerat

Gast
Naja, ich finde nicht, dass mein Code-Schnipsel sehr komplex ist. Wenn man erstmal mit der Standard-API vertraut ist, genügen halt 57 Zeilen um deine Aufgabe annähernd zu lösen. Natürlich ist mir klar, das man als "blutiger Anfänger" Klassen wie den StreamTokenizer und TreeMap noch nicht unbedingt kennt.
Aber kannst mein Schnipsel ja mal nachvollziehen. Es zählt nicht nur die Wörter, sondern fügt sie auch gleich nach Alphabet sortiert in die TreeMap ein - ist halt der Vorzug der TreeMap. Einziges Manko des Tokenizers ist dabei eigentlich nur, dass die Festlegung der Character ein wenig unhandlich ist, ganz besonders, wenn man "parseNumbers()" verwendet hat und plötzlich auch Zahlen in Strings haben will.
 

Conax

Mitglied
Ich habe jetzt java seit einer Woche (Brückenkurs). Ich werde Wirtschaftsinformatik studieren und habe dafür den Brückenkurs besucht: Brückenkurs Informatik

Es ging halt bisher hauptsächlich um Themen wie Schleifen und arrays. Welche Lektüre empfiehlt sich da eigentlich für absolute Anfänger (bzw. womit hatte vielleicht der ein oder andere hier gute Erfahrung gemacht)?
 
S

Spacerat

Gast
Eine stets hier empfohlene Lektüre int z.B. eben jene "Insel", welche bereits im Dokument deinem Link folgend vorhanden ist. Eine weitere wäre aus meiner Sicht noch das Javabuch von Guido Krüger und Thomas Stark.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
A Textdatei mit BufferedReader einlesen Java Basics - Anfänger-Themen 0
F Textdatei einlesen in ArryList (Objekte abspeichern?) Java Basics - Anfänger-Themen 4
G Erste Schritte Textdatei einlesen und in Array speichern Java Basics - Anfänger-Themen 5
F Textdatei einlesen und Zeilen zählen Java Basics - Anfänger-Themen 10
S Textdatei einlesen und JFrame füllen Java Basics - Anfänger-Themen 14
C Einlesen in Array von Textdatei sehr langsam Java Basics - Anfänger-Themen 7
P Input/Output Textdatei einlesen - 1. Zeichen fehlt Java Basics - Anfänger-Themen 7
J Textdatei einlesen und ausgeben - NullPointerException Java Basics - Anfänger-Themen 5
A Textdatei einlesen - erstes Zeichen falsch Java Basics - Anfänger-Themen 20
C Spalte einer Textdatei einlesen Java Basics - Anfänger-Themen 10
M Textdatei einlesen Java Basics - Anfänger-Themen 3
B Input/Output Textdatei einlesen Windows / Linux Java Basics - Anfänger-Themen 2
F Textdatei einlesen Java Basics - Anfänger-Themen 7
C Textdatei einlesen -> Probleme Java Basics - Anfänger-Themen 3
S Textdatei stückweise einlesen Java Basics - Anfänger-Themen 7
R String einlesen, Textdatei danach durchsuchen und aus Zeile Objekt erzeugen Java Basics - Anfänger-Themen 5
E Textdatei einlesen Java Basics - Anfänger-Themen 7
D Textdatei einlesen und darin suchen Java Basics - Anfänger-Themen 11
K Textdatei einlesen funtioniert nicht Java Basics - Anfänger-Themen 8
B Textdatei als String einlesen Java Basics - Anfänger-Themen 3
A Textdatei einlesen Java Basics - Anfänger-Themen 12
W Textdatei einlesen Java Basics - Anfänger-Themen 4
N Textdatei einlesen, Filtern und Splitten Java Basics - Anfänger-Themen 4
G Textdatei einlesen Java Basics - Anfänger-Themen 2
saxman Unicode aus Textdatei einlesen und wieder abspeichern Java Basics - Anfänger-Themen 13
M Textdatei mit unterschiedlicher Spaltenanzahl einlesen Java Basics - Anfänger-Themen 4
B Problem beim einlesen einer Textdatei Java Basics - Anfänger-Themen 3
0 Textdatei in Char[] einlesen ? Java Basics - Anfänger-Themen 3
H Zahlen von Textdatei einlesen Java Basics - Anfänger-Themen 2
Dilandau textdatei einlesen und zeilen sammeln Java Basics - Anfänger-Themen 12
A Textdatei einlesen Java Basics - Anfänger-Themen 32
V Textdatei mit filechooser wählen und dann einlesen Java Basics - Anfänger-Themen 4
G Inhalt einer Textdatei in ein Array einlesen Java Basics - Anfänger-Themen 2
S Textdatei einlesen? Java Basics - Anfänger-Themen 9
R Textdatei einlesen Java Basics - Anfänger-Themen 5
D komplette Textdatei einlesen Java Basics - Anfänger-Themen 15
G Textdatei einlesen Java Basics - Anfänger-Themen 2
O Fehlermeldung bei Einlesen der textdatei. Java Basics - Anfänger-Themen 2
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
izoards Textdatei Human unreadable abspeichern Java Basics - Anfänger-Themen 17
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
LeoDerKek Textdatei in JAR-File Java Basics - Anfänger-Themen 4
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
D Input/Output Mehrzeiligen String aus Textdatei erstellen Java Basics - Anfänger-Themen 5
M Datenbank oder Textdatei? Java Basics - Anfänger-Themen 4
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
L Objekt aus Textdatei in ArrayList speichern Java Basics - Anfänger-Themen 4
J Wörter aus Textdatei suchen Java Basics - Anfänger-Themen 2
S Importieren einer Textdatei Java Basics - Anfänger-Themen 2
x-tshainge Innerhalb von Textdatei addieren Java Basics - Anfänger-Themen 9
Jinnai4 Werte in Textdatei ändern Java Basics - Anfänger-Themen 2
JDimi Textdatei mit beliebig vielen Zeilenumbrüchen erstellen Java Basics - Anfänger-Themen 2
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
G Wert in Textdatei ersetzen? Java Basics - Anfänger-Themen 2
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
C Input/Output Textdatei vom Java-Programm nicht geladen Java Basics - Anfänger-Themen 58
T Länge einer Textdatei Java Basics - Anfänger-Themen 11
S Übertragen einer Textdatei in ein 2d-Array Java Basics - Anfänger-Themen 2
N Integers aus Textdatei auslesen und mehrere Arrays erstellen Java Basics - Anfänger-Themen 9
T Textdatei öffnen und ans Ende scrollen Java Basics - Anfänger-Themen 11
J Textdatei filtern und bearbeiten Java Basics - Anfänger-Themen 1
C Textdatei oder doch eine Datenban Java Basics - Anfänger-Themen 15
J Input/Output Tilemap effizient speichern als Textdatei Java Basics - Anfänger-Themen 7
J Input/Output Zeile in Textdatei ändern Java Basics - Anfänger-Themen 14
M Textdatei(en) in .jar schreiben Java Basics - Anfänger-Themen 5
K Textdatei auslesen Java Basics - Anfänger-Themen 10
H Input/Output Inhalt einer GUI in Textdatei speichern Java Basics - Anfänger-Themen 1
K Erste Schritte Textdatei -> Array Java Basics - Anfänger-Themen 1
F Problem mit Tabulatoren bei Zeilen zählen einer Textdatei Java Basics - Anfänger-Themen 17
L Namen aus Textdatei auslesen Java Basics - Anfänger-Themen 1
E Textdatei kopieren funktioniert nicht Java Basics - Anfänger-Themen 12
M Zweidimensionales Array aus Textdatei gewinnen Java Basics - Anfänger-Themen 6
C Aus einer Textdatei Zahlen lesen mit Leerzeichen Java Basics - Anfänger-Themen 11
S Methoden Textdatei auslesen Java Basics - Anfänger-Themen 11
G Textdatei auf Dubletten prüfen Java Basics - Anfänger-Themen 8
T Textdatei Zeile löschen? Java Basics - Anfänger-Themen 4
T Textdatei beschreiben/bearbeiten Java Basics - Anfänger-Themen 4
C auslesen bestimmter werte einer textdatei und anschl. hineinschreiben in eine neue txt-datei. Java Basics - Anfänger-Themen 2
S Textdatei lesen, Methode gibt nur die letzte Zeile aus. Warum? Java Basics - Anfänger-Themen 5
R Werte in eine Textdatei schreiben Java Basics - Anfänger-Themen 20
J Neue Zeile an bestimmter Stelle in Textdatei einfügen Java Basics - Anfänger-Themen 2
D Textdatei in geschachtelte Array speichern Java Basics - Anfänger-Themen 17
T Scanner für große Textdatei Java Basics - Anfänger-Themen 11
A Unterschied Textdatei und Quelltextdatei Java Basics - Anfänger-Themen 5
J Input/Output Textdatei in einer JAR lesen Java Basics - Anfänger-Themen 3
T Erste Schritte einzelne Wörter aus textdatei lesen... Java Basics - Anfänger-Themen 4
S Textdatei im Internet lesen und editieren Java Basics - Anfänger-Themen 2
M Input/Output Objekte in einer Textdatei ablegen (Highscore) Java Basics - Anfänger-Themen 9
P CSV Daten in Textdatei Speichern Java Basics - Anfänger-Themen 3
K Input/Output Eingelesenedaten von Scanner als Textdatei ausgeben? Java Basics - Anfänger-Themen 2
N Input/Output Konsolenausgabe in Textdatei speichern/umleiten Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben