Datei öffnen / auslesen / editieren in JAVA (extrem Wichtig!)

Kian_the_klingon

Grünschnabel
Also,
geschafft habe ich es schon eine Datei zu schreiben, dass roblem liegt beim auslesen!
Wie kann man in einer Line der Datei die ersten Bytes bzw. Zeichen ausblenden oder in den Stringbuffer schieben ohne das man die Stringlänge kennt. Bei JAVA war die einzig nützliche Funktion die ich gefunden hab' skip() und readLine(), die helfen mir aber auch nicht weiter.

In der Datei steht z.B.:

yyyyyyyyy 12345

Jetzt will ich die "y" nicht einlesen sondern nur die Zahl(en).

Ich bin im Grunde C++ Progger und muss nun was in JAVA hinbekommen.
Das es in JAVA so schwer wird ne einfache Datei ein und Ausgabe zu schreiben hab ich net erwartet.

Zum Vergleich der C++ Code (falls jemand nicht so genau weiss was gemeint ist!):

Code:
int zahl;

char stringbuffer[100];

		FILE* pfile;

	if((pfile = fopen("Datei.ini","r")) == NULL)
		MessageBox("Datei konnte nicht gefunden werden",            "Warnung",MB_OK);

	fscanf(pfile,"%s", stringbuffer);
	fscanf(pfile,"%d", &zahl);

	fclose(pfile);

Ich hoffe das irgendjemand mir helfen kann!
 
Hallo!

Versuchs mal hiermit:

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

/*
 * Created on 25.06.2004
 *
 */

/**
 * @author Administrator
 * 25.06.2004
 **/
public class FileReaderExample {

	public static void main(String[] args) {

		try {

			//Möglichkeit 1

			FileReader fr = new FileReader("c:/Test.txt");

			int skipChar = 'y';

			int c;
//read() gibt bei EOF -1 zurück ...
			while ((c = fr.read()) != -1) {
				if (c == skipChar)
					continue;

				System.out.print((char)c);
			}

			fr.close();

			System.out.println("++++++++++++++++++");

			// Besser wäre aber IMHO Möglichkeit 2

			fr = new FileReader("c:/Test.txt");

			BufferedReader br = new BufferedReader(fr);

			String line;

			while ((line = br.readLine()) != null) {
				System.out.println(line.replaceAll("y", ""));
			}

			br.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Mein Test.txt File:

Code:
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyABDERDJKLj1234
yyyyureiwuoriweu32783489734289
y199

Gruß Tom
 
Zuletzt bearbeitet:
Danke, aber das hatte ich nicht gemeint, die Reihe "y"s sollte nur als Beispiel dienen, ich wollte wissen wie ich es schaffe einen String auszublenden oder zu überspringen ohne dass ich weiss aus welchen Zeichen der String besteht und wieviele es davon gibt.
Denn so eine Stringkette besteht aus verschiedenen Buchstaben.

z.B.:

Hallo 34

jetzt will ich das "Hallo" rausnehmen, so dass ich die "34" einlesen kann.
Ich weiss aber nicht wieviele und welche Buchstaben dieses "Hallo" besitzt, ich weiss nur, dass es vor der Zahl eine Reihe von Zeichen gibt, und diese will ich ausblenden, so dass ich an die Zahl kann.
 
Hallo!

Hast du nun in deiner Textdatei immer ein jeder Zeile eine Zahl stehen?
Vor dieser Zahl steht dann eine beliebige Anzahl von Zeichen und dahinter steht nichts mehr? Kannst du immer davon ausgehen, dass vor dieser Zahl nur "Nichtziffern" Zeichen stehen?

Dann würde das hier passen:

(Test.txt hat den selben Inhalt wie zuvor)

Code:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
 * Created on 26.06.2004
 */

/**
 * @author Administrator
 */
public class FileReaderExample {

	public static void main(String[] args) {
		try {
			FileReader fr = new FileReader("c:/test.txt");
			int i;

			while ((i = fr.read()) != -1) {
				if (i == (int) '\n')
					System.out.println();
				// Wenn das eingelesene Zeichen keine Zahl darstellt ... lies
				// nächstes zeichen
				if (!Character.isDigit((char) i))
					continue;
				System.out.print((char) i);
			}

			fr.close();

			BufferedReader br = new BufferedReader(
					new FileReader("c:/test.txt"));

			System.out.println("++++++++++++++++++++++++++++++++++++++");

			String line;

			//Mit diesem regex besorgen wir uns einfach den Teil des Strings
			// der die Zahl darstellt
			// (Danke an Reima, Weasel und Tim) ;-)
			Pattern pattern = Pattern.compile("^\\D*(\\d*)$");

			while ((line = br.readLine()) != null) {
				Matcher matcher = pattern.matcher(line);
				if (matcher.matches())
					System.out.println(matcher.group(1));
			}

			br.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}

HTH

Gruß Tom
 
Zuletzt bearbeitet:
Zurück