Forum: PC-Programmierung Java Datenauslesen + Bcc berechnen


von Topal (Gast)


Lesenswert?

Moin Moin,

ich bin etwas VIEL überfordert. Und zwar habe ich folgendes Problem und 
hoffe auf Hilfe?!
Ich habe hier einmal zwei Scripte das eine ist von einem Freund das 
andere aus dem Netz. Leider habe ich von Programmierung Null ahnung.

Datensatz auslesen:
1
import java.io.*;
2
3
public class LeseAusDatei {
4
5
  public static void main (String[] args) throws IOException{
6
     byte zeichen;
7
     char buchstabe;
8
     String text = "";
9
     String dateiName = "PAT_HIMED0000002295.DAT";
10
     FileInputStream leseStrom = new FileInputStream(dateiName);
11
     do{
12
       zeichen = (byte)leseStrom.read();
13
       text += (char)zeichen;
14
     } while (zeichen !=-1);
15
     leseStrom.close();
16
     System.out.println(text);
17
  }
18
}

BCC Berechnung: (vom Freund)
1
package tp;
2
3
public class BCCBerechner {
4
  public static void main(String[] args) {
5
    String eingabe = "DN09111110300380002792002210002518033411 BGabriele Schilles Krähenwegweg 42 Mustertal 52115 2B";
6
    int erg = 0;
7
    for (int i = 0; i < eingabe.length(); i++)
8
      erg = erg ^ eingabe.charAt(i);
9
    System.out.println("Ergebnis(dezimal): " + (erg ^ 3));
10
  }
11
  
12
}
Das Funktioniert auch soweit.

Nun bräuchte ich die möglichkeit das automatisch nach einlesen des 
Datensatzes der BCC berechnet wird.

Könnte mir da evtl. jemand Helfen?

von Ich (Gast)


Lesenswert?

1
import java.io.*;
2
3
public class LeseAusDateiund BerechneBCC {
4
5
  public static void main (String[] args) throws IOException{
6
     byte zeichen;
7
     char buchstabe;
8
     String text = "";
9
     String dateiName = "PAT_HIMED0000002295.DAT";
10
     FileInputStream leseStrom = new FileInputStream(dateiName);
11
     do{
12
       zeichen = (byte)leseStrom.read();
13
       text += (char)zeichen;
14
     } while (zeichen !=-1);
15
     leseStrom.close();
16
     String bcc = StringBCCBerechner(text);
17
     System.out.println(bcc);
18
  }
19
20
  public static StringBCCBerechner (String text) {
21
    int erg = 0;
22
    for (int i = 0; i < text.length(); i++)
23
      erg = erg ^ eingabe.charAt(i);
24
    System.out.println("Ergebnis(dezimal): " + (erg ^ 3));
25
  }
26
}

ode rso irgendwie. nicht getestet, grad nur auf die schnelle 
zusammengeklickt ...

von Ich (Gast)


Lesenswert?

...
Zu schnell auf ok geklickt:
1
  public static StringBCCBerechner (String text) {
2
    int erg = 0;
3
    string result:
4
    for (int i = 0; i < text.length(); i++)
5
      erg = erg ^ eingabe.charAt(i);
6
     result = (erg ^ 3).toString();
7
    return result;
8
  }

von Topal (Gast)


Lesenswert?

Wie soll ich das nun genau zusammen packen? Verstehe ich nicht so ganz.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Erm... wieso fängst du dann nicht an dich damit zu beschäftigen? So wird 
das doch nix. Zumal das "Auslesebeispiel" auch noch unnötig viele Casts 
enthält und nach dem ende der Datei am Schluss ein falsches Zeichen 
anhängt...

von Topal (Gast)


Lesenswert?

Weil ich SI bin und kein AE. Programmierung ist einfach nicht mein ding!
Habe schön öfter versucht mich da einzuarbeiten es ist aber ein Buch mit 
7 Siegeln. Mein Chef verlangt halt von mir das ich das mache auch wenn 
es nicht mein Job ist. Da ich Null Peil habe versuche ich eine andere 
Lösung zu finden. Das das so scheiße ist ist auch mir klar...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Topal schrieb:
> Weil ich SI bin und kein AE.

Erleuchte uns: Wie meinen?

von Topal (Gast)


Lesenswert?

Systemintegrator und kein Anwendungsentwickler!

von Rogie (Gast)


Lesenswert?

import java.io.*;

public class LeseAusDatei {

  public static void main (String[] args) throws IOException{
     byte zeichen;
     char buchstabe;
     String text = "";
     String dateiName = "PAT_HIMED0000002295.DAT";
     FileInputStream leseStrom = new FileInputStream(dateiName);
     int erg = 0;

     do{
       zeichen = (byte)leseStrom.read();
       erg ^= zeichen;

     } while (zeichen !=-1);
     leseStrom.close();
     System.out.println(""+erg);
  }
}

von Topal (Gast)


Lesenswert?

Danke erstmal für den quell Text. Aber leider liefert er mir Minuswerte.

Habe ihn mir einwenig angeschaut und bissel mit meinem wenigen können 
geändert.
1
import java.io.*;
2
3
public class LeseAusDatei {
4
5
  public static void main (String[] args) throws IOException{
6
     byte zeichen;
7
     char buchstabe;
8
     String text = "";
9
     String dateiName = "PAT_HIMED0000002295.DAT";
10
     FileInputStream leseStrom = new FileInputStream(dateiName);
11
     int erg = 0;
12
          
13
     while ((zeichen = (byte) leseStrom.read()) != -1)
14
         erg = erg ^ zeichen;
15
     leseStrom.close();
16
     System.out.println(""+ (erg ^3));
17
  }
18
}

Ich bin nun bei Schritt 2 angekommen bei dem die ausgelesen werte in ein 
Verzeichnis auf C geschrieben werden sollen.
1
import java.io.*;
2
import java.io.FileInputStream;
3
import java.io.FileOutputStream;
4
import java.io.IOException;
5
6
public class LeseAusDatei {
7
8
  public static void main (String[] args) throws IOException{
9
     byte zeichen;
10
     char buchstabe;
11
     String text = "";
12
     String dateiName = "PAT_HIMED0000002295.DAT";
13
     FileInputStream leseStrom = new FileInputStream(dateiName);
14
     int erg = 0;
15
     byte [] text2Bytes = dateiName.getBytes();         
16
     
17
     String dateiName1 = "c:\\Sicherung\\test.DAT";         
18
     
19
     FileOutputStream fos = new FileOutputStream(dateiName1);   
20
     fos.write(text2Bytes);                   
21
     
22
     while ((zeichen = (byte) leseStrom.read()) != -1)
23
         erg = erg ^ zeichen;
24
     leseStrom.close();
25
     System.out.println(""+ (erg ^3));
26
  }
27
}

Leider Schreibt er mir immer in das angegebene Verzeichnis in die .dat 
Datei die erstellt wird "PAT_HIMED0000002295.DAT"
Was mir auch klar ist das das passiert, aber ich habe keine ahnung was 
ich ändern müsste damit er mir den Inhalt der PAT_HIMED0000002295.DAT 
Datei sichert. Kann mir da evtl. jemand Helfen?

gruß

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Es ist überhaupt nicht klar was du jetzt sichern willst. Aber was macht 
eigentlich ein "SI" aus?

Etwas mitdenken kann man doch bestimmt auch in diesem Bereich erwarten.

Die Leseroutine ist jetzt korrekt, (das byte muss da noch weg) aber wenn 
du:
byte [] text2Bytes = dateiName.getBytes();
Aufrufst, dieses in eine neue Datei schreibst und dich ersthaft wunderst 
warum du den Inhalt von dateiName (nämlich *PAT_HIMED0000002295.DAT* wie 
oben zugewiesen) in deiner neuen Datei erhältst weiß ich ehrlich gesagt 
nicht mehr weiter...

Auf diese weise schreibst du alles was in der Ursprungsdatei ist 
gleichzeitig in die neue Datei:
1
while ((zeichen = leseStrom.read()) != -1) {
2
         erg = erg ^ (zeichen 0xFF);
3
         fos.write(zeichen)
4
}
Wenn du das Ergebnis in eine Datei schreiben willst dann solltest du 
eben das Ergebnis statt per System Out auszugeben eben in die neue Datei 
schreiben.

Wieso sträubst du dich so davor einfach mal ein paar Tutorials über Java 
durch zuarbeiten, vielleicht wird dann einiges klarer.

Und klar können dir hier viele Leute helfen, nur normalerweise bezahlt 
man Leute dafür das sie die Arbeit von anderen tun die Sie selbst nicht 
auf die Reihe kriegen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.