Börsenanalyseprogramm mit ArrayList<BufferedWriter>

james_no

Mitglied
Liebes Forum,
für ein Schulprojekt schreibe ich mit zwei anderen ein Börsenanalyseprogramm (DAX) in Java.
Die Daten werden mit JSoup aus dem Internet geholt, dann in eine ArrayList gespeichert und sollen nun als letzten Schritt in Textdateien gespeichert werden (jede Aktie hat eine eigene Textdatei, also insgesamt 30 Dateien).
Um das ganze zu schreiben habe ich mit eine ArrayList mit BufferedWritern zugelegt, um dort alle unterzubringen und dann aufzurufen. Das speichern der Daten funktioniert auch einwandfrei aber ich bekomme es einfach nicht hin, die Daten in die Datei zu speichern (die Datei soll nur einmal erstellt und danach nur noch aktualisiert werden).
Liebe Grüße
P.S.: soll ich den Code als .java-Datei dazu hochladen?
 

james_no

Mitglied
Okay also erstmal: die Analyse der Daten ist in diesem Projekt nicht meine Aufgabe, deswegen habe ich mich damit nicht befasst :D
Und hier der Code, zuerst
Code:
ArrayList<BufferedWriter> writerList = new ArrayList<>();
und dann das hier (list ist dabei die ArrayList mit Daten und an den Indices 0, 2, 4, ... sind die Namen der Aktie und alle ungeraden Indices beinhalten die Werte, die ich in die Textdateien schreiben will)
Code:
for (int i = 0; i < list.size(); i += 2) {
            try {
                String temp = list.get(i) + ".txt";
                writerList.add(new BufferedWriter(new FileWriter(temp)));
                writerList.get(i/2).write("test");
                writerList.get(i/2).newLine();
            } catch (IOException e) {
                System.out.println(e.toString());
            }
        }
        for (int i = 0; i < writerList.size(); i++) {
            try {
                writerList.get(i).write(list.get((i+1)+i));
                writerList.get(i).newLine();
                writerList.get(i).write(list.get((i+1)+i));
            } catch (IOException e) {
                System.err.println("Error during refresh-process: " + e.toString());
            }
        }
 
X

Xyz1

Gast
Achherrje, da wird
  1. BufferedWriters in eine Liste gesteckt,
  2. wild mit Listenindices gefummelt....
Java:
ArrayList<File> fileList = new ArrayList<>();
for (aktie : aktien) {
  fileList.add(new File(..aktie..));
}
for (int i = 0; i < fileList.size(); i++) {
  try (BufferedWriter writer = new BufferedWriter(..fileList.get(i)..)) {
    for (entity : aktien.get(i)..) {
      writer.write(entity.toString());
      writer.wirte("\n");
    }
  }
}
 
X

Xyz1

Gast
Kommt darauf an, wie deine Klasse "Aktie" aussieht, deren Objekte in der Liste list liegen.
Oder ob alles String-basiert ist. Oder ob du das hier einstellen darfst.
Im Momente ist es etwas Raten. Es darf auch mal jemand anderes ewas dazu schreiben....
(Da kommen bestimmt noch Antworten)
 
X

Xyz1

Gast
Aber mit "entity" ist keine spezielle Notation oder Pseudocode gemeint! Damit sei (mehr oder weniger) kleinstmögliche Einheit gemeint.
.. steht für von dir vorzunehmende Ergänzungen...
 

james_no

Mitglied
Okay, vielen Dank für die Antwort!
Ich habe das jetzt so ähnlich gelöst, funktioniert jetzt prinzipiell
Java:
try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileList.get(i)))){
       writer.write(tempStorage[i]);
       writer.newLine();
       writer.write(list.get(i+1+i));
} catch (IOException e) {
       System.err.println("Error while writing to files: "+e.toString());
}
Allerdings habe ich jetzt das Problem, dass die Textdateien jedes Mal neu erstellt werden und damit bei jedem Programmneustart alles Vorherige weg ist...
Irgendwelche Vorschläge?
Viele Grüße
James
 

Harry Kane

Top Contributor
Das ganze sieht immer noch nach "mit Indices rumfummeln" aus, aber ohne deine Abstraktion von "Aktienkurs" zu kennen, kann ich keine bessere Method anbieten.
Zu deiner Frage: API Dokumentation von FileWriter lesen und den Konstruktor mit dem zusätzlichen Boolean Parameter verwenden.
 
Zuletzt bearbeitet:
X

Xyz1

Gast
Ist schon OK so. Klar gibt es auch andere Methodik, Technik, Systematik - aber darauf will ich nicht hinaus.

Damit man verstehen kann, was los ist, erwarte ich jetzt eine natürlichsprachliche Umschreibung mit wiedermals 2000-3000 Wörtern. ;)

Vorher ist mir gar nicht klar, um was es geht. Zum Bleistift die Klasse Aktie - völlig unbekannt. :(
 

Nuiton

Bekanntes Mitglied
Ich wuerde das Rad nicht immer neu erfinden. Yahoo bietet dafuer schon ein recht gutes API an, womit man alles moegliche mit Aktien anfangen kann.
 

Neue Themen


Oben