bytestream Beispiel

swordwolt

Grünschnabel
Download-Dialog wird nicht geöffnet (Bytestream)

Hallo zusammen,

Problemstellung:
Ich soll einen Download per java für meine Gruppe erstellen. Die Datei kommt vom backend per bytestream und soll als Datei auf dem jeweiligen Rechner gespeichert werden. Nun hab ich leider noch keinen Zugriff aufs backend. Jedoch benötige ich einen bytestream zum Testen der Funktion, denn ich leider bei Gnicht finden kann.


Meine Farge:

Könnte mir jemand ein bytestream Beispiel für eine konkrete Datei (eine kleine Datei ^^)
erstellen?




Vielen Dank

MfG

swordwolt
 
Zuletzt bearbeitet:
wie input und outputstream funktionieren ist mir schon klar.

Mein Problem ist das meine Aufgabe ist den Download zu programmieren. Und zum testen ob er auch richtig funktioniert brauch ich ein Beispiel eines Bytearrays eines Dokumentes. Keinen Code nur das Bytearray als String.
 
Hi

Und warum machst du dir nicht einfach eins, in dem zB. Hallo steht?
Ist eine kleine Datei, aber es ist eine.

PS: Willkommen bei tutorials.de!
 
Ja aber in dem Bytestrem muss doch auch der Dateityp irgendwie definiert sein. Man sollte ja schon irgendwie unterscheiden können ob es ein jpg oder ein txt ist.
 
Nö, es gibt keine zuverlässige Methode um zu bestimmen, welchen Typ die Datei hat. Du bist offensichtlich von Windows gewohnt, dass die Dateien eine Endung haben, die auf den Typ schließen lässt. Es gibt aber noch eine weitere bekannte Möglichkeit, auf den Dateityp zu schließen: Indem du die ersten Bytes ausliest und mit einer festgelegten Tabelle vergleichst, siehe https://en.wikipedia.org/wiki/File_format#Magic_number
Warum überträgst du nicht einfach auch zusätzlich den Dateinamen?
 
Nunja ich bekomme von Backend nur einen Bytestream. Jedoch kann ich bei der Anfrage ans Backend den Typ eigentlich abfangen.

Mal etwas anders mein Problem:

Wenn ich aus einen string "Hallo Welt" ein Bytearray erstelle und dieses Bytearray im Download
als test.txt ausgeben lasse.
Schreibt es mir dann Hallo Welt in die test.txt ?
Ohne das beim einlesen ein Dateityp mitgegeben wurde?

Ich mein Das kann doch nicht einfach so funktionieren. Da muss es doch bestimmte Norm geben wie so ein Bytearay aufgebaut ist um eine Datei wiederzuspiegeln.
 
Das kommt ganz darauf an. Um einen Dateityp festzulegen, gibt es normalerweise 3 Wege:
1. die „magic number“, https://en.wikipedia.org/wiki/File_format#Magic_number (unter Unix-basierten Systemen der gängige Weg)
2. der MIME-Type, https://en.wikipedia.org/wiki/Internet_media_type (gängig bei Kommunikation im Internet, dafür gibt es eigene Header in Protokollen wie SMTP und HTTP)
3. die Dateiendung (Filename extension), auf Windows üblich

Was willst du mit der Datei machen? sie von deinem Backend aus auf die Festplatte speichern? Welches Backend nutzt du denn? Unterstützt es wenigstens eine der oben genannten Methoden?

Im Zweifelsfall würde ich so vorgehen: Die Datei speichern und dann mit Files.probeContentType detektieren lassen. Achtung, dazu wird Java 7 benötigt!
 
Was willst du mit der Datei machen? sie von deinem Backend aus auf die Festplatte speichern?
Ja

Das Backend wird von einer anderen Gruppe abgehandelt. Diese erstellen ja eigentlich die Dateien nicht. Die Dateien sind auf Rechner x gespeichert. Von diesem auf den server hochgeladen. und von dem auf Rechner y wieder heruntergeladen.

Jedoch liegt die Uploadfunktion ebenfalls nicht in meinem Aufgaben bereich (wobei ich langsam glaub das ich um die hier nicht herumkomme).

Das ganze muss als Bytestream relisiert werden.

Was mich nun interessiert ist:

Kann man den Dateiinhalt beim Hochladen einer Datei ohne Typfestlegung in ein Bytestream schreiben?

Und noch viel wichtiger:

Wenn man dann den Bytestream wieder zu einer Datei beim Download zurückumwandeln will und den Dateityp extern holt (gleicher Typ wie bei der geuploadeten Datei sozusagen). Wird dann d der Bytestream richtig zurück umgewandelt und in die Datei geschrieben?
 
Das Backend wird von einer anderen Gruppe abgehandelt. Diese erstellen ja eigentlich die Dateien nicht. Die Dateien sind auf Rechner x gespeichert. Von diesem auf den server hochgeladen. und von dem auf Rechner y wieder heruntergeladen.

Jedoch liegt die Uploadfunktion ebenfalls nicht in meinem Aufgaben bereich (wobei ich langsam glaub das ich um die hier nicht herumkomme).
Dann musst du dich mit denen wohl auf eine gemeinsame Funktionalität einigen. Eigentlich müsste(n) der/die bei der Implementation des Updoaders auf die gleichen Probleme stoßen. Nebenbei ist es auch meistens sinnvoll, die Dateigröße mit abzuspeichern.

Kann man den Dateiinhalt beim Hochladen einer Datei ohne Typfestlegung in ein Bytestream schreiben?
Ja, du kannst beliebigen Inhalt in Bytestreams schreiben, auch Zufallszahlen ;)

Wenn man dann den Bytestream wieder zu einer Datei beim Download zurückumwandeln will und den Dateityp extern holt (gleicher Typ wie bei der geuploadeten Datei sozusagen). Wird dann d der Bytestream richtig zurück umgewandelt und in die Datei geschrieben?
Das hat gar nichts mit dem Bytestream zu tun. Bytestream ist so konzipiert, dass die Bytes übertragen werden, d.h. an der ursprünglichen Datei wird erst mal nichts geändert. Wenn Rechner x die Dateien in einem Bytestream liest, der Server in einem Bytestream schreibt, wieder in einem Bytestream liest und du wieder per Bytestream auf Rechner y schreibst, funktioniert das.
 
Zurück