tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
3739
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    larss larss ist offline Mitglied Bronze
    Registriert seit
    Apr 2005
    Ort
    raum hameln / hannover (niedersachsen)
    Beiträge
    26
    hallo,

    ich möchte viele werte errechnen lassen und dann in eine datei schreiben. ist es besser, diese sofort nach berechnen in eine datei zu schreiben oder erst zu sammeln und dann in die datei schreiben zu lassen? mit welchen funktionen könnte man diese denn sammeln? am besten wäre ein kleines beispiel..

    danke!
     

  2. #2
    ToMeFox Tutorials.de Gastzugang
    Hi!

    Generell sind Festplattenzugriffe eher gering zu halten! Geschwindigkeit und Material können darunter leiden... Es kommt immer darauf an, wie groß die Menge an Daten ist. Es gibt da viele Möglichkeiten je nach dem, was gespeichert werden soll! Ich gehe mal davon aus, dass du Zahlenwerte speicherst... Sind diese nur ganzzahlig oder gibts Nachkommastellen?

    ZB:
    Code :
    1
    2
    3
    4
    
     double w1=1.777772932094
     double w2=1.92823
     double w3=1.05
     int       w4=5
    Diese Werte könnten in einen StringBuffer geschrieben werden und nach der Berechnung
    in die Datei geschrieben werden.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    StringBuffer sb=new StringBuffer(); 
     
    sb.append(String.valueOf(w1));
    sb.append("#");             //Trennzeichen
    sb.append(String.valueOf(w2));
    sb.append("#");             //Trennzeichen
    sb.append(String.valueOf(w3));
    sb.append("#");             //Trennzeichen
    sb.append(String.valueOf(w4));
    sb.append("#");             //Trennzeichen
    usw... (oder in einer Schleife)
     
    dann ab in die Datei damit...
    (Package java.io.*)
    FileOutputStream out = new FileOutputStream ( "Der Pfad ...." );
    out.write(sb.toString().getBytes());//->Vorsicht mit Umlauten wie ä ö usw---
                                              //    die werden von .getBytes() nicht richtig codiert
    out.flush();
    out.close();

    Gruß Torsten!
    Geändert von ToMeFox (24.04.05 um 18:30 Uhr)
     

  3. #3
    larss larss ist offline Mitglied Bronze
    Registriert seit
    Apr 2005
    Ort
    raum hameln / hannover (niedersachsen)
    Beiträge
    26
    hallo torsten..

    danke für deine antwort erstmal!

    genau das habe ich mir auch überlegt, da ich bedenken hätte, dass zuviele festplattenzugriffe das leben eben dieser verkürzt..

    ich möchte 256 ganzzahlenwerte per zufall in bestimmten bereichen errechnen lassen, was nach 256 bytes wieder von vorne anfängt. die berechnung wiederholt sich demnach alle 256 bytes. diese schleife wird 256 mal durchlaufen (also insgesamt 65536 entstehende bytes)..

    ein weiteres problem hab ich, da an die entstandene datei eine noch größere menge von bytes angehängt werden soll, die aber immer gleich sind. sollte ich diese einfach in einer extra-datei speichern, diese einlesen und der entstandenen anfügen? wie macht man das am geschicktesten?

    gruß
    lars
     

  4. #4
    ToMeFox Tutorials.de Gastzugang
    Hallo nochmal!

    Also wie du das machen willst, musst du entscheiden! Es würde beides funktionieren. Ich würde zwei Dateien schreiben. Das macht das auslesen einfacher, da du dann nicht mehr unterscheiden musst, ob es die Zahlen sind oder nicht... Ich hab da mal kurz ein kleines Beispiel zusammengetippert.. vielleicht hilfts!?

    Ich speichere hier immer nach 256 erstellten Zahlen.. wie gesagt... wie du es machst.. hängt von dir ab!

    Hoffentlich hilfts! Viel Glück!


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    
    package test;
     
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
     
     
     
    public class StringBufferTest
    {
        private int[] dasArray;
     
        private File datei1;
     
        public StringBufferTest()
        {
            this.dasArray = new int[256];
            this.datei1 = new File("c:/TestNummer.dat");
            try
            {
                // Dateien leeren...
                new FileOutputStream(this.datei1, false);
            } catch (FileNotFoundException e)
            {
                System.exit(1);
                e.printStackTrace();
            }
     
        }
     
        private void generateTheNumbers()
        {
            for (int iAussen = 0; iAussen < this.dasArray.length; iAussen++)
            {
                for (int iInnen = 0; iInnen < this.dasArray.length; iInnen++)
                {
                    this.dasArray[iInnen] = (int) (Math.random() * 5000.0);
                }// end for
                this.speichereDasArray();
            }// end for
        }
     
        private void speichereDasArray()
        {
            OutputStreamWriter out = null;
            StringBuffer sb = new StringBuffer();
     
            // Erstelle die Daten
     
            for (int i = 0; i < this.dasArray.length; i++)
            {
                sb.append(String.valueOf(this.dasArray[i]));
                sb.append("#");// Das Trennzeichen
            }// end for
     
            try
            {
                // Parameter boolean true , lässt dich am Ende der Datei weiter
                // schreiben
                out = new OutputStreamWriter(
                        new FileOutputStream(this.datei1, true));
                out.write(sb.toString());
                out.flush();
                out.close();
            } catch (FileNotFoundException e)
            {
                e.printStackTrace();
                System.exit(1);
            } catch (IOException e)
            {
                e.printStackTrace();
                System.exit(1);
            } finally
            {
                try
                {
                    out.close();
                } catch (IOException e1)
                {
                    ;// Nichts
                }
            }// end try / catch / finally
        }
     
        public static void main(String[] args)
        {
            StringBufferTest sb = new StringBufferTest();
            sb.generateTheNumbers();
        }
    }

    Grüßle Torsten!
     

  5. #5
    larss larss ist offline Mitglied Bronze
    Registriert seit
    Apr 2005
    Ort
    raum hameln / hannover (niedersachsen)
    Beiträge
    26
    hi torsten..

    vielen vielen dank, dass du dir soviel mühe gemacht hast

    hab ein neues posting reingestellt (FileInputStream- / FileOutputStream-Problem.. PLEASE HELP..)und erst jetzt gesehen, dass du mir geantwortet hast..

    hab da ein listing gepostet, das aber leider nur 1 byte in der enstehenden datei speichert. weißt du vielleicht einen rat?

    grüße
    lars
     

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 09.02.10, 16:25
  2. Antworten: 3
    Letzter Beitrag: 21.01.08, 13:09
  3. Antworten: 1
    Letzter Beitrag: 24.01.07, 18:19
  4. Werte in Datei schreiben
    Von Stephan Boettcher im Forum Visual Basic 6.0
    Antworten: 9
    Letzter Beitrag: 30.06.04, 11:50
  5. Sessionvariablen sofort schreiben?
    Von dave im Forum PHP
    Antworten: 3
    Letzter Beitrag: 13.02.02, 17:07