import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.InputMismatchException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringTokenizer;
public class text2
{
private static String delete( String file, String suchbegriff )
{
int zeilen = 0;
ArrayList<String> foundtext = new ArrayList<String>();
try{
FileInputStream fis = new FileInputStream(file); // Datei öffnen
Scanner scanner = new Scanner(fis); // Scanner herstellen
scanner.useDelimiter("\n"); // Den Scanner nur bei "newline" umbrechen lassen
//löschen
while( scanner.hasNext() )
{
String line = scanner.next(); // nächste Linie lesen
StringTokenizer tok = new StringTokenizer(line,"\t");
boolean found = false;
while (tok.hasMoreTokens())
if (tok.nextToken().equals(suchbegriff)) found = true;
if(!found){
foundtext.add(line);
}
else{
zeilen++;
}
}
FileWriter fw = new FileWriter(file);
String s_out = foundtext.toString();
//Entferne [ und ersetzen von Kommas und Tabs
s_out = s_out.substring(1,s_out.length()-1);
s_out = s_out.replaceAll(", ","\n");
fw.write(s_out+"\n");
fw.flush();
fw.close();
}
catch(Exception e){e.printStackTrace();}
String s = "\n\n"+Integer.toString(zeilen)+" wurden gelöscht.\n\n";
return s;
}
public static String search( String file, String suchbegriff )
{
int zeilen = 0;
ArrayList<String> foundtext = new ArrayList<String>();
try{
FileInputStream fis = new FileInputStream(file); // Datei öffnen
Scanner scanner = new Scanner(fis); // Scanner herstellen
scanner.useDelimiter("\n"); // Den Scanner nur bei "newline" umbrechen lassen
while( scanner.hasNext() )
{
String line = scanner.next(); // nächste Linie lesen
if(line.contains(suchbegriff))
{ // überprüfen ob die Linie den Suchausdruck enthält.
foundtext.add(line);
zeilen++;
}
}
fis.close(); // Stream schliessen um Ressourcen freizugeben
}
catch(Exception e){e.printStackTrace();}
String s_out = foundtext.toString();
//Entferne [ und ersetzen von Kommas und Tabs
s_out = s_out.substring(1,s_out.length()-1);
s_out = s_out.replaceAll(", ","\n");
s_out = s_out.replaceAll("\t"," - ");
s_out += "\n\nIn "+zeilen+" Zeilen gefunden\n\n";
return s_out;
}
public static void main(String args[])
{
String jn = "";
//Endlosschleife
do{
try{
Scanner scanner = new Scanner(System.in);
System.out.println("Telefonbuch");
System.out.println("***********");
System.out.println("!INFO!::::::--> \n1 = Neue Tel-Nummmer eintragen, \n2 = Tel-Buch anzeigen, \n3 = für Person suchen und \n4 = für löschen.");
System.out.print("Was möchten sie tun? Bitte geben sie hier ein: ");
Integer a = scanner.nextInt();
switch(a)
{
case 1:
System.out.print("Name:");
String name = scanner.next();
System.out.print("Vorname:");
String vorname = scanner.next();
System.out.print("Telefon: ");
String tel = scanner.next();
FileWriter fw = new FileWriter("c:\\text2.txt", true);
fw.write(name+"\t"+vorname+"\t"+tel+"\n");
fw.close();
break;
case 2:
ArrayList<String> lese_text = new ArrayList<String>();
Scanner inhalt = new Scanner(new File("c:\\text2.txt"));
while(inhalt.hasNext())
{
lese_text.add(inhalt.nextLine());
}
for(String zeile : lese_text)
{
System.out.println("Zeile: "+ zeile);
}
break;
case 3:
System.out.print("Suchtext: ");
String s = scanner.next();
String s_out = search( "c:\\text2.txt",s);
if( s_out!=null ) System.out.println(s_out); else System.out.println("nichts gefunden");
break;
case 4:
System.out.print("Löschtext: ");
String sl = scanner.next();
System.out.println(delete( "c:\\text2.txt",sl));
break;
default:
System.out.println("Falsche Eingabe! (1-3 ist erlaubt)");
}
System.out.println("Programm beenden? 'j' für Ja und 'n' für Nein");
System.out.print("Bitte geben Sie ihre Entscheidung hier ein: ");
jn = scanner.next();
}
catch(InputMismatchException ime)
{
System.out.println("Nur Zahlen von 1-3 sind erlaubt");
}
catch(IOException ioe)
{
System.out.println("Dateifehler");
}
} while (!jn.equals("j"));
}
}