gustav Hilfe !!!

Status
Nicht offen für weitere Antworten.

chriscool

Mitglied
Hallo gustav,

ich habe vor ein paar Tagen das Thema für das lesen von Dateien und gewollte Strings ersetzten hier in das Forum gestellt und habe folgendes von Dir bekommen, was ich nun bei mir benutzen wollte. Aber es wird nicht ersetzt in der Datei, meine Datei ist leer!!!! Kannst Du mir dabei helfen.

Das war von dir!
Code:
public boolean Load(String FileName)
   {
     String buf = null ;
     int Zeile = 1 ;
     boolean back = false ;

// ##########
     String writeBack = null ;

     try
     {
       BufferedReader input = new BufferedReader(
                                new InputStreamReader(
                      new FileInputStream(FileName)), 1000) ;

// ########################
      FileOutputStream Fileoutput = new FileOutputStream(FileName) ;
      DataOutput outFile = new DataOutputStream(Fileoutput ) ;
// ########################

       while (input.ready() )
       {
         buf = input.readLine() ;
// ##########################
         writeBack = buf.replaceAll("§xxxx", "XXXXXXX") ;
         // oder ersetzen mit
         // index = buf.indexOf("§") usw. siehe Java Dokumentation für String

         Zeile++ ;
         outFile.writeBytes(writeBack +"\n") ;  // weiss jetzt nicht, ob "\n" nötig ist
       }
       input.close() ;
       back = true ;
     }
    catch (Exception e)
    {
      System.out.println(e);
      System.out.println("----------------------Exception laden/schreiben!");
      System.exit(1);
    }
    return back ;
   }
}

jptc.org: code tags eingefügt
 

gustav

Aktives Mitglied
Sorry,

dies liegt mit Sicherheit daran, das Du eine Datei gleichzeitig öffnest und beschreibst. Ich sehe hier auf die Schnelle 2 Möglichkeiten.

  • Entweder Du liest erst die komplette Datei ein und bearbeitest alles danach, oder
    Du benennst die Datei erst um, dann kannst du mit 2 Dateien arbeiten

Hab mal den Code für die 2. Variante zusammengestellt. Gefällt mir noch nicht so ganz - ABER es funktioniert.

Code:
import java.io.* ;

public class TestLoad
{

  public boolean Load(String FileName)
  {
    String buf = null ;
    int Zeile = 1 ;
    boolean back = false ;

    String writeBack = null ;

    try
    {
      String tmpFileName = FileName + ".tmp" ;

      File inFile = new File(FileName) ;
      File tmpFile = new File(tmpFileName) ;

        // Input File umbenennen
      if (inFile.renameTo( tmpFile))
      {
          // erfolgreich => ersetzen
        BufferedReader input = new BufferedReader(
            new InputStreamReader(
            new FileInputStream(tmpFileName)), 1000) ;

        FileOutputStream Fileoutput = new FileOutputStream(FileName) ;

        DataOutput outFile = new DataOutputStream(Fileoutput) ;

        while (input.ready())
        {
          buf = input.readLine() ;

          writeBack = buf.replaceAll("replaceMe", "XXXXXXX") ;

          Zeile++ ;
          outFile.writeBytes(writeBack + "\n") ; // weiss jetzt nicht, ob "\n" nötig ist
        }
        input.close() ;
        back = true ;

          // alte Input Datei löschen
        if (! tmpFile.delete())
        {
          System.out.println("Fehler beim Löschen der temporären Datei") ;
        }
      }
      else
      {
        System.out.println("Fehler beim Öffnen/Anlgen der temporären Datei") ;
      }
    }
    catch (Exception e)
    {
      System.out.println(e) ;
      System.out.println("----------------------Exception laden/schreiben!") ;
      System.exit(1) ;
    }
    return back ;
  }

  public static void main(String args[])
  {
    TestLoad test = new TestLoad() ;
    test.Load("in.dat") ;
  }
}
Hier wird am Ende die benutzte temporäre Datei wieder gelöscht. Als Sicherheitsoption brauchst Du dies vielleicht gar nicht machen.
Komischerweise meckert Java beim Umbenennen nicht wenn die Datei bereits vorhanden ist. Vielmehr wird sie ohne Nachfrage überbügelt. Zumindest ist es bei mir so, denn Du kannst das Löschen mal ausklammern und das Testprogramm einige Male starten. Es sollte immer ohne Fehler durchlaufen.
 

chriscool

Mitglied
hey vielen dank! compilieren kann ich es, wenn ich es nun ausführen will, dann bekomme ich folgenden fehler:

java.lang.NoSuchMethodError ?????
 

gustav

Aktives Mitglied
Sonst poste mal die komplette Fehlermeldung. Eigentlich sollte ab Java 1.4 auch replaceAll vorhanden sein.
Klingt aber verdammt nach einer falschen main - Methode. Überprüf das mal !
 

chriscool

Mitglied
ich stell dir nochmal meinen ganzen text zur verfügung. jetzt bekomme ich immer die excaption
"Fehler beim öffnen/Anlgen der temporären Datei"

import java.io.* ;

public class replaceStr {

private String File;

public void replaceStr(String Filename) {

File = Filename;

//replaceStr test = new replaceStr() ;
Load(File);
}

public void Load(String File)
{
String buf = null ;
int Zeile = 1 ;
boolean back = false ;
String FileName = File;

String writeBack = null ;

try
{
String tmpFileName = FileName + ".tmp" ;

File inFile = new File(FileName + ".txt") ; // <= der path von der file ist .....\email (ohne endung)
//Daher habe ich noch .txt anghängt. sonst erstellt er
//mir eine "emai.txt.tmp"

File tmpFile = new File(tmpFileName) ;

// Input File umbenennen
if (inFile.renameTo(tmpFile))
{
// erfolgreich => ersetzen
BufferedReader input = new BufferedReader(
new InputStreamReader(
new FileInputStream(tmpFileName)), 1000) ;

FileOutputStream Fileoutput = new FileOutputStream(FileName + ".txt") ;

DataOutput outFile = new DataOutputStream(Fileoutput) ;

while (input.ready())
{
buf = input.readLine() ;

writeBack = buf.replaceAll("%xx", "XXXXXXX") ;

Zeile++ ;
outFile.writeBytes(writeBack + "\n") ; // weiss jetzt nicht, ob "\n" nötig ist
}
input.close() ;
back = true ;

// alte Input Datei löschen
if (! tmpFile.delete())
{
System.out.println("Fehler beim Löschen der temporären Datei") ;
}
}
else
{
System.out.println("Fehler beim Öffnen/Anlgen der temporären Datei") ;
}
}
catch (Exception e)
{
System.out.println(e) ;
System.out.println("----------------------Exception laden/schreiben!") ;
System.exit(1) ;
}
//return back ;
}
}
 

chriscool

Mitglied
Exception in thread "main" java.lang.NoSuchMethodError
at replaceStr.Load(replaceStr.java:47)
at replaceStr.replaceStr(replaceStr.java:12)
at str.main(str.java:15)

das ist die fehlermeldung, wenn keine .tmp file da ist.
es wird die tmp file eerstellt, der in der ausgangsfile stehende text in sie hinein kopiert und dann kommt die fehlermeldung!!!!
 

gustav

Aktives Mitglied
Ich glaube das liegt daran, das Du ein wenig mit den Dateinamen durcheinander kommst. Warum darf die temporäre Datei nicht email.txt.tmp heissen ? Wenn Du in der Load Methode zusätzliche Endungen anfügst, dann musst Du aufpassen das die Datei auch exisitert. Konnte Deine Fehlermeldung leider nicht reproduzieren.

Was mir noch aufgefallen ist : Es gibt bereits eine Klasse File, vielleicht gibt es Nebeneffekte wenn Du zusätzlich noch eine solche Variable definierst. Um solche Probleme zu vermeiden, bietet sich folgende Notation an :
1. alle Variablen beginnen mit einem kleinen Buchstaben
2. Konstanten bestehen grundsätzlich aus Grossbuchstaben
3. Klassen beginnen mit einem Grossbuchstaben oder noch eine wenig weiter getrieben, beginnen immer mit einem speziellenGrosbuchstaben.....
 

chriscool

Mitglied
ok, ich habe den pfad zur dati nun wieder voll angegeben .......\email.txt.

nun bekomme ich, wenn beim ersten mal alles ausgeführt wird, die exception in thread main...., was ich oben gepostet habe. zum ersten mal besteht die datei ja gewöhnlicherweise nicht!!!!
die datei email.txt.tmp wird erstellt mit dem inhalt drin und dann bumm die exception.

besteht die file .tmp dann passiert genau das gleiche wie oben nur anstatt der fehlermeldung bekomme ich die exception "Fehler beim öffnen/Anlegen der temporören Datei"


Die Filevariablen habe ich auch nun umbenannt!!!

warum kommt er nicht mal zum ersetzten der strings????
 

gustav

Aktives Mitglied
Arbeitest Du zufällig mit Windows ?

Kannst ja mal versuchen existierende Dateien vorher zu löschen :
Code:
    if (tmpFile.exists())  // eventuell existierende Datei löschen
    {
      tmpFile.delete() ;
    }

Wer genau verursacht die Exception, replaceAll oder ein späterer Schreibzugriff auf die Datei.

Eventuell mußt Du noch prüfen, ob Du einen leeren Strings hast
Code:
  if (buf == null) { System.out.println("!!!! empty String detected") ; }
 

chriscool

Mitglied
Aber mal eine Frage, was macht die "back" variable???

ich versuche das ganze gerade so umzuprogrammieren, das ich so zusagen meine email.txt nie anrühr, nur um den standarttext herauszuholen!
will die datei auslesen, in einen string packen, entsrechende felder ersetzen und dann in einen nächsten string übergeben und auf dem bildschirm ausgeben.

Hast du eine idee, was ich an deinem code alles weglassen kann?????
 

chriscool

Mitglied
wie bekomme ich eigentlich einen string, also die taxtfile, in einen string und dann alles dort ersetzten. geht das mit dem stringbuffer???? übernimmt der auch absätze??
 

gustav

Aktives Mitglied
Die back Variable war ursprünglich dafür gedacht über Erfolg oder Misserfolg zu informieren, also true wenn alles glatt gegangen ist ansonsten false. Somit hast Du im Programm die Möglichkeit eventuelle Korrekturen vorzunehmen - z.B. dummy Datei für Load() erstellen. Wenn Du back auskommentierst ist es auch nicht weiter schlimm.

Generell könntest Du Dir überlegen mit StringBuffer zu arbeiten wenn Du die Daten weiter verarbeiten oder irgendwie zwischenspeichern willst.
 

chriscool

Mitglied
Gustv, ich stehe hier vor einem Problem.
Ich lese meine Datei nun Zeilenweise ein und ersetze Zeilenweise einen String. Wie kann ich denn mehrere Strings in einer Zeile ersetzen ohne den zuvor erstellten String mit der ersten ersetzten Variablen zu übetrschreiben???

Hast Du vielleicht eine Idee?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
H pdf stempel - Hilfe erbeten Java Basics - Anfänger-Themen 6
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
F RegEx Hilfe Java Basics - Anfänger-Themen 5
S Hilfe bei Endlosschleife Java Basics - Anfänger-Themen 2
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
U Ich bräuchte Hilfe Java Basics - Anfänger-Themen 1
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
aero043 Hilfe bei BlueJ Hausübung Java Basics - Anfänger-Themen 27
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
P Hilfe gesucht Java Basics - Anfänger-Themen 11
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
R Java Bücher hilfe Java Basics - Anfänger-Themen 9
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
I Scheduling: "Quartz" verwenden, Hilfe bei Umstellung Java Basics - Anfänger-Themen 3
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
SpiritsHuner Hilfe!! Java Basics - Anfänger-Themen 16
Lacotto Java Kurs Aufgaben Hilfe Java Basics - Anfänger-Themen 14
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
X Hilfe beim Übertragen in eine For-Schleife Java Basics - Anfänger-Themen 1
Neuling47 Denkfehler? Hilfe Java Basics - Anfänger-Themen 11
S Hilfe bei Umänderung von Java Code Java Basics - Anfänger-Themen 16
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Bitte um Hilfe muss es schnellstmöglich erledigen Java Basics - Anfänger-Themen 15
L Hilfe bei RegEx Java Basics - Anfänger-Themen 4
I Bitte um Hilfe zu unterstehenden Code Java Basics - Anfänger-Themen 6
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
Neuling47 bräuchte dringend hilfe Java Basics - Anfänger-Themen 6
D Bräuchte Hilfe im Bezug zum printarray() Java Basics - Anfänger-Themen 4
M Bitte um Hilfe bei 2DArrays Java Basics - Anfänger-Themen 8
HeiTim Array hilfe Java Basics - Anfänger-Themen 14
M LCD-Ziffern-Hilfe Java Basics - Anfänger-Themen 6
özkan hilfe!! Java Basics - Anfänger-Themen 4
C Hilfe bei einem Anfängerprojekt Java Basics - Anfänger-Themen 25
D Abrechnung bitte um hilfe Java Basics - Anfänger-Themen 25
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
N Hilfe bei der Installation Java Basics - Anfänger-Themen 2
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
S Hilfe bei Programmierung einer Hotelabrechnung Java Basics - Anfänger-Themen 5
enjoykimii Strukturierte Programmierung Hilfe Java Basics - Anfänger-Themen 29
H Bräuchte hilfe Java Basics - Anfänger-Themen 3
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
H Brauche Hilfe Java Basics - Anfänger-Themen 2
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
H Hilfe Java Basics - Anfänger-Themen 6
H Brauche hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
kevkev Hilfe bei Schiffe versenken Java Basics - Anfänger-Themen 5
FelixxF Erste Schritte Hilfe bei Fußball Manager Java Basics - Anfänger-Themen 2
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
josfe1234 Hilfe access denied ("java.io.FilePermission" " " "read") Java Basics - Anfänger-Themen 12
Vivien Hilfe bei Type Conversion Java Basics - Anfänger-Themen 3
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
N Laufzeitberechnung - dringende Hilfe! Java Basics - Anfänger-Themen 1
G Java Hilfe Java Basics - Anfänger-Themen 3
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
A Schleifen, Hilfe! Java Basics - Anfänger-Themen 6
LeonDerStudent Hilfe bei Uniprojekt Java Basics - Anfänger-Themen 2
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
Kapfski Was habe ich falsch gemacht? Hilfe! Java Basics - Anfänger-Themen 17
R Java (Eclipse) "Lagerverwaltung" HILFE Java Basics - Anfänger-Themen 13
M Bräuchte Hilfe bei diesen Methoden Java Basics - Anfänger-Themen 4
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
Gaudimagspam Dringend Java Hilfe benötigt Java Basics - Anfänger-Themen 19
jonathanpizza Hilfe bei einer Übungsaufgabe Java Basics - Anfänger-Themen 6
dieter000 Hilfe bei dem Beispiel, wie gehe ich sowas am besten an? Java Basics - Anfänger-Themen 32
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
pry bitte Hilfe beim Kreditrechner objektorientiert Java Basics - Anfänger-Themen 6
R Hilfe bei removeduplicates Java Basics - Anfänger-Themen 5
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
marcooooo einmal noch schnell hilfe bitte:/ Java Basics - Anfänger-Themen 2
Q Hilfe bei Hausaufgeben Java Basics - Anfänger-Themen 2
J Hilfe beim Label animieren Java Basics - Anfänger-Themen 1
S Hilfe Java Basics - Anfänger-Themen 1
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
Kawastori Hilfe bei Methoden Übung Java Basics - Anfänger-Themen 6
Chabub Hilfe bei Stacks und Queue Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben