Ich wollte ja ein Programm schreiben das eine Textdatei (Wörterbuch) einliest und diese dann mit Zusätzen (in dem Fall Zahlen) wieder ausgibt siehe hier:
http://www.java-forum.org/java-basics-anfaenger-themen/124761-textdatei-einlesen.html
Ich habe das Programm jetzt etwas überarbeitet um an meine Vorstellungen anzupassen. Siehe hier:
Das Problem ist bei größeren Wörterbüchern hängt er sich auf. Also "top" zeigt mir eine CPU Auslastung von 100% an aber es tut sich nichts.
Bei kleineren Wortlisten mit nur ein paar Einträgen klappt es ohne Probleme nur die großen mag er irgendwie nicht.
http://www.java-forum.org/java-basics-anfaenger-themen/124761-textdatei-einlesen.html
Ich habe das Programm jetzt etwas überarbeitet um an meine Vorstellungen anzupassen. Siehe hier:
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 pwgenerator {
// 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) throws IOException {
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() throws IOException
{
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)
*/
BufferedReader stdin = new BufferedReader(
new InputStreamReader( System.in ));
System.out.print("Zahlenraum eingeben: ");
int l;
String eingabe = stdin.readLine();
l = Integer.parseInt(eingabe);
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++)
for(int j = 0; j < currentLine; j++)
*/
{
// currentWord = currentWords[j];
for(int k = 1; k <= l; k++)
// System.out.println(currentWord + k);
System.out.println(currentLine + k);
//System.out.print(currentWord + 100 + ".\n\n");
}
}
}
}
Das Problem ist bei größeren Wörterbüchern hängt er sich auf. Also "top" zeigt mir eine CPU Auslastung von 100% an aber es tut sich nichts.
Code:
stefan@linux-ufn8:~/src/java/pwgenerator/bin> java pwgenerator
Dateiname: masterwordlist.txt
^Cstefan@linux-ufn8:~/src/java/pwgenerator/bin>
Bei kleineren Wortlisten mit nur ein paar Einträgen klappt es ohne Probleme nur die großen mag er irgendwie nicht.