Input & Output Problem

  • Themenstarter Themenstarter Essener24434
  • Beginndatum Beginndatum
E

Essener24434

Gast
Hallo Leute,

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:
package File;

  import java.io.*;
  public class IO {
    public static void main (String args[]) {
      String zeile="";

      try {
        BufferedReader b = new BufferedReader (new FileReader("c:/IO/test.txt") );
        while( (zeile = b.readLine()) != null ) { // liest zeilenweise aus Datei
          System.out.println(zeile);              // Ausgabe zeilenweise
        }
        b.close();
      }
      catch (IOException e) {
        System.out.println("Fehler: "+e.toString());
      }
		}
  }
 
Moin,

mal vorab: ich würde die eigene Klasse NIE "IO" nennen !!

Die Anwendung soll als erstes nach einem Texteditor im Verzeichnis suchen
Du suchst nach einen "Texteditor" ???:L

Es sucht nach einer Datei und falls sie da ist ...
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 Dateiname
File f = new File( strFile.toString() );
if ( !f.exists() ) 
...

// Du könntest  zuvor noch die Existenz des Pfades prüfen !
String strPfad = ... // der gesuchte Pfad
File fDir = new File(strPfad);
// falls angegebenes DIR nicht ex. --> erstellen 
if ( !fDir.exists() ) 
...

Zum wahlfreien lesen und Schreiben der Textdatei soll Dir dieses Stichwort helfen: RandomAccessFile

Gruß
Klaus
 
Danke erstmal für deine Antwort.
Ich habe deine Lösung ausprobiert, doch beim Ausführen zeigt mir die Console einen Fehler an.
Hier der Code:
Java:
package File;

import java.io.File;

public class NewMain3
{

	private static String c;

	public static void main(String[] args)
	{
		String strFile = test.txt;  // der Dateiname
		File f = new File(strFile.toString());
		if (!f.exists())
		{
		}


		String strPfad = ("c:/test.txt"); // der gesuchte Pfad
		File fDir = new File(strPfad);
		if (!fDir.exists())
		{
		}
	}
}

Und hier die Fehlermeldung:

Exception in thread "main" java.lang.NullPointerException
at File.NewMain3.main(NewMain3.java:23)
Java Result: 1
ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Minuten 0 Sekunden)
 
Moin,

Ich habe deine Lösung ausprobiert, doch beim Ausführen zeigt mir die Console einen Fehler an.

Was soll denn Deiner Meinung nach test.txt sein ???
Du musst schon einen String erstellen !!
Java:
String strFile = test.txt;  // FALSCH !!

// etwa so 
String strFileName ="c:/test.txt";


nein, dies hier ist nicht der Pfad, sondern Pfad PLUS Dateiname
Java:
String strPfad = ("c:/test.txt"); // der gesuchte Pfad
File fDir = new File(strPfad);
if (!fDir.exists())
{
}

doch wohl eher so:
Java:
String strPfad = "c:/meinPfad"; // der gesuchte Pfad - die Klammern sind hier überflüssig !
File fDir = new File(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 = new File( strFile.toString() );
if ( !f.exists() ) 
{
	try
        {
	     f.createNewFile();
        }
}

Gruß
Klaus
 
Moin
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 = new File( strFile );
if ( !f.exists() ) 
{
    try
        {
         f.createNewFile();
        }
}

Gruß
Klaus
 
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:
package File;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class NewMain3
{

	private static String c;

	public static void main(String[] args) throws FileNotFoundException, IOException
	{
		String zeile = "";
		String strFile = "c:/test.txt";  // der Dateiname
		File f = new File(strFile.toString());
		if (!f.exists())
		{
			try
			{
				BufferedReader b = new BufferedReader(new FileReader("c:/test.txt"));
				while ((zeile = b.readLine()) != null)
				{ // liest zeilenweise aus Datei
					System.out.println(zeile);              // Ausgabe zeilenweise
				}
				b.close();
			} catch (IOException e)
			{
				System.out.println("Fehler: " + e.toString());
			}
		}


		String strPfad = "c:/"; // der gesuchte Pfad
		File o = new File(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 = new PrintWriter(new File("D:/testFile.txt"));

			writer.write(value);

			writer.append("\nDas steht am Ende");

			writer.close();


		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}
}
 

Neue Themen


Zurück
Oben