Advanced   Java   Services
Dateihandling
Next Exercise Exercise Home
Lösungen


/*
   Lesen Sie eine Textdatei ein und schreiben Sie den Inhalt in umgekehrter Reihenfolge
   (Zeichen für Zeichen) wieder weg. Kontrollieren Sie ihre Ergebnis mit einem Editor

   carriage return (cr)    '\r'  ascii-code 13    '\r'==Character.LINE_SEPARATOR
   line feed (lf)          '\n'  ascii-code 10
   Reihenfolge auf Windowssystemen ist cr,lf   auf Unixsystemen  nur lf
*/

import java.io.*;

public class Uebung1
{
   public static void main(String[] args)
   {

      try
      {
         String fileName="Uebung1.java";
         File file = new File(fileName) ;
         int len = (int)file.length() ;
         char[] buf = new char[len] ;

         FileReader fr = new FileReader(file);
         fr.read(buf) ;
         fr.close();
         System.out.println("Datei eingelesen");

         FileWriter fw = new FileWriter("Rueckwaerts.txt");

         for(int i=buf.length-1 ; i>-1 ; i--)
            fw.write(buf[i])  ;

         fw.close();
         System.out.println("Datei weggeschrieben");

      }
      catch(FileNotFoundException ex)
      {
         System.out.println(ex);
      }
      catch(IOException ex)
      {
         System.out.println(ex);
      }
   } // end main
} // end class

/*
   Lesen Sie eine Textdatei zeilenweise ein und schreiben Sie den Inhalt in umgekehrter
   Reihenfolge der Zeilen wieder weg. Kontrollieren Sie ihre Ergebnis mit einem Editor.
*/

import java.io.*;
import java.util.*;

public class Uebung2
{
   public static void main(String[] args)
   {

      try
      {
         String fileName="Uebung2.java";
         BufferedReader br = new BufferedReader( new FileReader(fileName) );
         Vector lines = new Vector();
         String line ;

         while( ( line=br.readLine() )!=null)
            lines.add(line);

         br.close();
         System.out.println("Datei eingelesen");

         FileWriter fw = new FileWriter("ZeilenRueckwaerts.txt");

         for(int i=lines.size()-1 ; i>-1 ; i--)
            fw.write(lines.get(i) + "\n" )   ;

         fw.close();
         System.out.println("Datei weggeschrieben");

      }
      catch(FileNotFoundException ex)
      {
         System.out.println(ex);
      }
      catch(IOException ex)
      {
         System.out.println(ex);
      }

   } // end main

} // end class

/*
   Lesen sie eine JavaQuellcodedatei ein und entfernen Sie alle alle einzeiligen
   Kommentare. Um zu vermeiden, daß das Kommentarzeichen im Programm als Suchmuter
   vorkommt ( etwa in indexOf("//") ) lesen Sie das Kommentarzeichen von einer eigenen
   Datei comment.dat ein. Speichern Sie die Datei unter einem neuen Namen ab. Laden Sie
   die neue Datei in einen Editor, ändern sie den Klassennamen auf den neuen
   Dateiennamen und compilieren Sie sie. Es sollte keine Probleme geben.
*/

import java.io.*;
import java.util.*;

public class Uebung3
{
   public static void main(String[] args)
   {

      try
      {
         String fileName="Uebung3.java";
         BufferedReader br = new BufferedReader( new FileReader(fileName) );
         Vector lines = new Vector();
         String line ;

         while( ( line=br.readLine() )!=null)
            lines.add(line);

         br.close();
         System.out.println("Datei eingelesen");

         // kommentarzeichen einlesen
         String comment = readComment();
         // es gibt kein replace in vector
         for(int i=0; i<lines.size() ; i++)
            lines.insertElementAt(removeComment((String)lines.remove(i), comment) ,i);

         FileWriter fw = new FileWriter("Uebung3a.java");

         for(int i=0; i<lines.size() ; i++)   // ...
            fw.write(lines.get(i) + "\n" )   ;

         fw.close();  // ...
         System.out.println("Datei weggeschrieben");

      }
      catch(FileNotFoundException ex)
      {
         System.out.println(ex);
      }
      catch(IOException ex)
      {
         System.out.println(ex);
      }
   } // end main

   private static String removeComment(String s, String comment)
   {
      if (comment!=null)
      {
         int index = s.indexOf(comment);
         return  index==-1 ? s :  s.substring(0,index);
      }
      return null;
   }

   private static String readComment()
   {
      try
      {
         BufferedReader br = new BufferedReader( new FileReader("comment.dat")) ;
         String comment = br.readLine();
         br.close();
         return comment ;
      }
      catch(IOException ex)
      {
         return null;
      }
   }
} // end class

/*
   Lesen sie eine JavaQuellcodedatei und entfernen Sie alle alle einzeiligen Kommentare
   (siehe vorige Aufgabe). Entfernen Sie auch alle mehrfachen Leerzeichen und ersetzen
   Sie Zeilenumbrüche durch Leerzeichen (Hinweis: verwenden sie die Klasse
   Stringtokenizer). Speichern Sie den Text unter einem neuen Namen ab. Laden Sie die
   neue Datei in einen Editor, ändern sie den Klassennamen auf den neuen Dateiennamen
   und compilieren Sie sie. Es sollte keine Probleme geben.
*/

import java.io.*;
import java.util.*;

public class Uebung4
{
   public static void main(String[] args)
   {

      try
      {
         String fileName="Uebung4.java";
         BufferedReader br = new BufferedReader( new FileReader(fileName) );
         Vector lines = new Vector();
         String line ;

         while( ( line=br.readLine() )!=null)
            lines.add(line);

         br.close();
         System.out.println("Datei eingelesen");

         // kommentarzeichen einlesen
         String comment = readComment();
         StringBuffer sb = new StringBuffer();

         // kommentare entfernen und in einen StringBuffer einlesen
         // dabei am ende jeder zeile einen zeilenumbruch einfügen
         for(int i=0; i<lines.size() ; i++)
            sb.append( removeComment( (String)lines.get(i), comment) +"\n" );

         // den stringbuffer einem stringtokenizer geben
         StringTokenizer st = new StringTokenizer(sb.toString());
         // der string wird nach leerzeichen und zeilenumbrüchen aufgesplittet

         // ein StringTokenizer ist eine Enumeration
         // jedes token wegschreiben
         FileWriter fw = new FileWriter("Uebung4a.java");
         //fw.write(sb.toString() );

         while( st.hasMoreElements() )
         {
            fw.write(st.nextToken() + " ");
         }

         fw.close();  // ...
         System.out.println("Datei weggeschrieben");

      }
      catch(FileNotFoundException ex)
      {
         System.out.println(ex);
      }
      catch(IOException ex)
      {
         System.out.println(ex);
      }
   } // end main

   private static String removeComment(String s, String comment)
   {
      if (comment!=null)
      {
         int index = s.indexOf(comment);
         return  index==-1 ? s :  s.substring(0,index);
      }
      return null;
   }

   private static String readComment()
   {
      try
      {
         BufferedReader br = new BufferedReader( new FileReader("comment.dat")) ;
         String comment = br.readLine();
         br.close();
         return comment ;
      }
      catch(IOException ex)
      {
         return null;
      }
   }

} // end class

top Exercise Home