Hallo erstmals. Ich bin ein 1.Lehrjahr Informatiker, und habe noch nicht viel Erfahrung mit Java. Ich bekam von meinem Chef den Auftrag, mit Java eine Anwendung zu entwicklen, die ein Textfile importiert, und dann zwischen jeden buchstaben der wörter im String ein beliebiges Zeichen einstzt.
hier der Code:
[Java]
import java.io.BufferedReader;//input eingabe
import java.io.File;//Die Klasse bietet eine große Anzahl von Methoden an, um Informationen über eine Datei oder ein Verzeichnis zu erhalten.
import java.io.FileReader;//Der FileReader liest aus Dateien entweder einzelne Zeichen, Strings oder Zeichenfelder. Wie beim Writer deklariert die Klasse Konstruktoren zur Annahme des Dateinamens. So zeigt folgendes Beispiel eine Anwendung der FileReader-Klasse.
import java.io.FileNotFoundException;//Öffnet die Datei zum Lesen über ein File-Objekt. Falls sie nicht verfügbar ist, löst der Konstruktor eine FileNotFoundException aus.
import java.io.FileWriter;
import java.io.IOException;//fehlerbehandlung
import java.iutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
public class badwordfilter
{
public static void main(String[] args) throws IOException
{
File Textdatei = new File("c://Program Files/Java/eclipse/BWF_Liste.txt");//zu lesende Textdatei
StringBuffer contents = new StringBuffer();//Kontainer, in dem die Datei abgelegt werden soll
BufferedReader reader = null;//bedeutet, dass noch auf kein objekt vorhanden ist
try//versuche:
{
reader = new BufferedReader(new FileReader(Textdatei));
String text = null;//versuche so lange zu lesen bis
while ((text = reader.readLine()) != null)//alle linien gelesen sind.
{
contents.append(text)
.append(System.getProperty(
"line.separator"));
}
} catch (FileNotFoundException e)//Fange fehlermeldung auf
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
} finally//schlussendlich
{
try//Versuche
{
if (reader != null)//wenn gelesenes nciht gleich null
{
reader.close();//schliesse reader
}
} catch (IOException e)
{
e.printStackTrace();
}
}
// erbebniss
System.out.println(contents.toString());
FileWriter writer;
File file;
// File anlegen
file = new File("d://bwf/test.txt");
try {
// new FileWriter(file ,true) - falls die Datei bereits existiert
// werden die Bytes an das Ende der Datei geschrieben
// new FileWriter(file) - falls die Datei bereits existiert
// wird diese überschrieben
writer = new FileWriter(file ,true);
// Text wird in den Stream geschrieben
writer.write(contents.toString());
// Platformunabhängiger Zeilenumbruch wird in den Stream geschrieben
writer.write(System.getProperty("line.separator"));
// Schreibt den Stream in die Datei
// Sollte immer am Ende ausgeführt werden, sodass der Stream
// leer ist und alles in der Datei steht.
// Text wird in den Stream geschrieben
writer.write(contents.toString());
writer.flush();
// Schließt den Stream
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
[/code]
der String wird schon mal in die Datei geschrieben, das sieht dann etwa so aus:
wort1
wort2
wort3
wort4
Die Wörter müssen schlussendlich Kommagetrennt sein, und eben mit beliebigen Zwischenzeichen "gefüllt" sein, also etwa so
w*o*r*t*1,
w*o*r*t*2,
w*o*r*t*3,
wie mache ich das? mit einer speziellen for-Schleife? Das Proglem ist, der Replace befehl bringt mir ja nichts, weil ja nichts ersetzt wird, sondern neu eingefügt wird ???:L
Und wie erkennt Mr. Java, dass jetzt ein neues Wort beginnt, und es zwischen den Wörtern keine Zeichen legen darf? denn die Wörter sind nicht alle gleich lang...
hier der Code:
[Java]
import java.io.BufferedReader;//input eingabe
import java.io.File;//Die Klasse bietet eine große Anzahl von Methoden an, um Informationen über eine Datei oder ein Verzeichnis zu erhalten.
import java.io.FileReader;//Der FileReader liest aus Dateien entweder einzelne Zeichen, Strings oder Zeichenfelder. Wie beim Writer deklariert die Klasse Konstruktoren zur Annahme des Dateinamens. So zeigt folgendes Beispiel eine Anwendung der FileReader-Klasse.
import java.io.FileNotFoundException;//Öffnet die Datei zum Lesen über ein File-Objekt. Falls sie nicht verfügbar ist, löst der Konstruktor eine FileNotFoundException aus.
import java.io.FileWriter;
import java.io.IOException;//fehlerbehandlung
import java.iutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
public class badwordfilter
{
public static void main(String[] args) throws IOException
{
File Textdatei = new File("c://Program Files/Java/eclipse/BWF_Liste.txt");//zu lesende Textdatei
StringBuffer contents = new StringBuffer();//Kontainer, in dem die Datei abgelegt werden soll
BufferedReader reader = null;//bedeutet, dass noch auf kein objekt vorhanden ist
try//versuche:
{
reader = new BufferedReader(new FileReader(Textdatei));
String text = null;//versuche so lange zu lesen bis
while ((text = reader.readLine()) != null)//alle linien gelesen sind.
{
contents.append(text)
.append(System.getProperty(
"line.separator"));
}
} catch (FileNotFoundException e)//Fange fehlermeldung auf
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
} finally//schlussendlich
{
try//Versuche
{
if (reader != null)//wenn gelesenes nciht gleich null
{
reader.close();//schliesse reader
}
} catch (IOException e)
{
e.printStackTrace();
}
}
// erbebniss
System.out.println(contents.toString());
FileWriter writer;
File file;
// File anlegen
file = new File("d://bwf/test.txt");
try {
// new FileWriter(file ,true) - falls die Datei bereits existiert
// werden die Bytes an das Ende der Datei geschrieben
// new FileWriter(file) - falls die Datei bereits existiert
// wird diese überschrieben
writer = new FileWriter(file ,true);
// Text wird in den Stream geschrieben
writer.write(contents.toString());
// Platformunabhängiger Zeilenumbruch wird in den Stream geschrieben
writer.write(System.getProperty("line.separator"));
// Schreibt den Stream in die Datei
// Sollte immer am Ende ausgeführt werden, sodass der Stream
// leer ist und alles in der Datei steht.
// Text wird in den Stream geschrieben
writer.write(contents.toString());
writer.flush();
// Schließt den Stream
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
[/code]
der String wird schon mal in die Datei geschrieben, das sieht dann etwa so aus:
wort1
wort2
wort3
wort4
Die Wörter müssen schlussendlich Kommagetrennt sein, und eben mit beliebigen Zwischenzeichen "gefüllt" sein, also etwa so
w*o*r*t*1,
w*o*r*t*2,
w*o*r*t*3,
wie mache ich das? mit einer speziellen for-Schleife? Das Proglem ist, der Replace befehl bringt mir ja nichts, weil ja nichts ersetzt wird, sondern neu eingefügt wird ???:L
Und wie erkennt Mr. Java, dass jetzt ein neues Wort beginnt, und es zwischen den Wörtern keine Zeichen legen darf? denn die Wörter sind nicht alle gleich lang...