import java.io.*;


// Zeicheneingabestrom, der beim Einlesen alle
// Großbuchstaben in Kleinbuchstaben umwandelt
public class LowerCaseReader extends FilterReader
{
	public LowerCaseReader(Reader in)
	{
		super(in);
	}
	
	public int read() 
	throws IOException 
	{
		char cb[] = new char[1];
		if (super.read(cb, 0, 1) == -1)
	    	return -1;
		else
	    	return Character.toLowerCase(cb[0]);
	}
	
	public int read(char cbuf[], int off, int len)
	throws IOException 
	{
		int n = super.read(cbuf, off, len);
		
		if (n != -1) 
		{
			for (int i = 0; i<n; i++)
			{
				cbuf[off+i] = Character.toLowerCase(cbuf[off+i]);
			}
		}
		return n;
	}
	

	public static void main(String[] args)
	throws IOException
	{
		BufferedReader derLeseStrom;
		BufferedReader din = new BufferedReader( 
		                     	new InputStreamReader(System.in));
        String dieEingabeZeile;
        String dateiname;
	
		// Name der Datei abfragen	
        System.out.print("Geben Sie einen Dateinamen ein: ");
		dateiname = din.readLine();
		
		try
		{
			derLeseStrom = new BufferedReader(
								new LowerCaseReader(
									new FileReader(dateiname)));
			System.out.println("Daten vorhanden");

			// Datei zeilenweise einlesen (dabei werden Groß- in
			// Kleinbuchstaben umgewandelt) und im Konsolenfenster
			// ausgeben
			while((dieEingabeZeile = derLeseStrom.readLine())!=null)
			{
				System.out.println(dieEingabeZeile);
			}
		}
		catch(FileNotFoundException e)
		{
			System.out.println("Datei nicht vorhanden!");
		}
		catch(IOException e)
		{
			System.out.println("Daten können nicht gelesen werden!");
		}
	
	}
}
