Moin,
ich möchte ein Programm schreiben, welches den UNIX-Befehl grep nachstellt, d.h. eine Datei einlesen, in dieser Datei nach einen eingegebenen Begriff suchen und die Zeilen, wo der Begriff drin vorkommt in eine neue Datei schreiben.
Das klappt auch alles soweit.
Ich habe nur das Problem, dass die Standardausgabe über die Konsole erfolgen soll, wenn kein Dateiname (writer) für die Ausgabe-Datei angegeben ist.
Allerdings bekomme ich eine NullPointerException, wenn ich Null übergebe.
[CODE lang="java" title="grep"]grep(args[0], new FileReader(args[1]), new FileWriter(args[2]));[/CODE]
[CODE lang="java" title="grep"]static void grep(java.lang.String regex, java.io.Reader reader, java.io.Writer writer) throws IOException {
BufferedReader in = new BufferedReader(reader);
BufferedWriter bufOut = new BufferedWriter (writer);
PrintWriter out = new PrintWriter(bufOut);
String line;
ArrayList<String> text = new ArrayList<String>();
while (null != (line = in.readLine())) {
if(line.contains(regex)) {
text.add(line);
}
}
if (writer != null) {
for (String newText : text)
out.write(newText + "\n");
}else {
for (String newText : text)
System.out.print(newText + "\n");
}
in.close();
out.close();
}
}[/CODE]
ich möchte ein Programm schreiben, welches den UNIX-Befehl grep nachstellt, d.h. eine Datei einlesen, in dieser Datei nach einen eingegebenen Begriff suchen und die Zeilen, wo der Begriff drin vorkommt in eine neue Datei schreiben.
Das klappt auch alles soweit.
Ich habe nur das Problem, dass die Standardausgabe über die Konsole erfolgen soll, wenn kein Dateiname (writer) für die Ausgabe-Datei angegeben ist.
Allerdings bekomme ich eine NullPointerException, wenn ich Null übergebe.
[CODE lang="java" title="grep"]grep(args[0], new FileReader(args[1]), new FileWriter(args[2]));[/CODE]
[CODE lang="java" title="grep"]static void grep(java.lang.String regex, java.io.Reader reader, java.io.Writer writer) throws IOException {
BufferedReader in = new BufferedReader(reader);
BufferedWriter bufOut = new BufferedWriter (writer);
PrintWriter out = new PrintWriter(bufOut);
String line;
ArrayList<String> text = new ArrayList<String>();
while (null != (line = in.readLine())) {
if(line.contains(regex)) {
text.add(line);
}
}
if (writer != null) {
for (String newText : text)
out.write(newText + "\n");
}else {
for (String newText : text)
System.out.print(newText + "\n");
}
in.close();
out.close();
}
}[/CODE]