ich muss eine Anwendung programmieren, die folgendermaßen abläuft:
Die Anwendung soll als erstes nach einem Texteditor im Verzeichnis suchen und wenn die Datei da ist, soll sie gelesen werden. Falls keine vorhanden ist, soll eine neue Textdatei erstellt werden. In der neuen Datei sollte man dann mittels Konsole etwas hineinschreiben können und beliebig verändert werden. Dabei soll der Datei Sätze HINZUGEFÜGT werden und nicht überschrieben werden.
Momentan habe ich bisher das hin bekommen. Es sucht nach einer Datei und falls sie da ist, liest er sie und es kommt in die Console. Wie muss ich nun weiter machen? Muss ich nach dem try eine If - Bedingung erstellen ? Und falls ja, was schreibe ich in die Klammern von If. Hoffe ihr könnt mir helfen.
Java:
packageFile;importjava.io.*;publicclass IO {publicstaticvoid main (String args[]){String zeile="";try{BufferedReader b =newBufferedReader(newFileReader("c:/IO/test.txt"));while((zeile = b.readLine())!=null){// liest zeilenweise aus DateiSystem.out.println(zeile);// Ausgabe zeilenweise}
b.close();}catch(IOException e){System.out.println("Fehler: "+e.toString());}}}
Na ja, nicht wirklich. Du suchst nicht, sondern versuchst einfach zu lesen und bekommst bei Nichtexistenz stumpf eine Exception - nicht die ferine englische Art
Du könntest die Existenz etwas so prüfen:
Java:
String strFile =...// der DateinameFile f =newFile( strFile.toString());if(!f.exists())...// Du könntest zuvor noch die Existenz des Pfades prüfen !String strPfad =...// der gesuchte PfadFile fDir =newFile(strPfad);// falls angegebenes DIR nicht ex. --> erstellen if(!fDir.exists())...
Zum wahlfreien lesen und Schreiben der Textdatei soll Dir dieses Stichwort helfen: RandomAccessFile
String strPfad ="c:/meinPfad";// der gesuchte Pfad - die Klammern sind hier überflüssig !File fDir =newFile(strPfad);if(!fDir.exists()){}
Außerdem fehlt hinter den if-Anweisungen der Code, den Du ausführen möchstest, wenn Pfad oder Datei nicht existieren - bspw.:
Java:
if(!fDir.exists()){// "mkdirs" erzeugt auch alle Unterverzeichnisse!!
fDir.mkdirs();}/* if */// falls die angegebene Datei nicht ex. --> erstellen File f =newFile( strFile.toString());if(!f.exists()){try{
f.createNewFile();}}
String strFile =...// der DateinameFile f =newFile( strFile.toString());[/QUOTE]
das is nich dein ernst oder ?String.toString()... zum trollen mags ja witzig sein ... aber viel schlimmer das es so direkt auch noch übernommen wurde
das is nich dein ernst oder ? String.toString() ... zum trollen mags ja witzig sein ... aber viel schlimmer das es so direkt auch noch übernommen wurde
nein - da hast Du ausnahmsweise mal recht ... das ist nicht mein Ernst
Mea maxima culpa :autsch:
Hatte das nur auf Schnelle reinkopiert, da ich gerade eine entsprechende Source offen hatte. strFile ist bei mir natürlich kein String sondern weiter vorher als StringBuilder deklariert!!
Richtig ist also:
Java:
// falls die angegebene Datei nicht ex. --> erstellen File f =newFile( strFile );if(!f.exists()){try{
f.createNewFile();}}
Vielen, vielen Dank euch beiden!
Ich bin jetzt soweit gekommen, dass die Anwendung ein neues Textdokument erstellt, falls kein vorhanden ist. Nun wollte ich noch, dass ein Text rein gesetzt wird. Mein Code sieht bisher so aus:
Java:
packageFile;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.io.PrintWriter;publicclassNewMain3{privatestaticString c;publicstaticvoidmain(String[] args)throwsFileNotFoundException,IOException{String zeile ="";String strFile ="c:/test.txt";// der DateinameFile f =newFile(strFile.toString());if(!f.exists()){try{BufferedReader b =newBufferedReader(newFileReader("c:/test.txt"));while((zeile = b.readLine())!=null){// liest zeilenweise aus DateiSystem.out.println(zeile);// Ausgabe zeilenweise}
b.close();}catch(IOException e){System.out.println("Fehler: "+ e.toString());}}String strPfad ="c:/";// der gesuchte PfadFile o =newFile(strFile.toString());if(!f.exists()){try{
f.createNewFile();}catch(IOException e){
e.printStackTrace();}}// Dieser Teil wird nicht ausgeführt ?FileWriter fw =null;try{String value ="Das steht am Anfang";PrintWriter writer =newPrintWriter(newFile("D:/testFile.txt"));
writer.write(value);
writer.append("\nDas steht am Ende");
writer.close();}catch(IOException e){
e.printStackTrace();}}}