Advanced
Java
Services
|
Dateihandling |
|
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