Zum Inhalt springen

File speichern dauert ewig...


The_red_one

Empfohlene Beiträge

Problem: Es wird ein File per Upload über eine .jsp in ein FormFile gepackt. Auf dem FormFile kannich nur eine InputStream holen. Das soll dann gespeichert werden über eine FileOutputStream.

Und 80MB dauern über 10 Minuten... ist das normal oder was ist falsch gelaufen?

private String saveFile(FormFile zipFile, String kommission, long id)

{

.....

int b;

FileOutputStream fileoutstream = new FileOutputStream(filename);

InputStream instream = zipFile.getInputStream();

while( (b = instream.read()) != -1 )

{

fileoutstream.write(B);

}

instream.close();

fileoutstream.flush();

fileoutstream.close();

.....

}

Das Ganze spiel sich bei mir lokal aufm Rechner ab. Also schließe ich Netzprobleme aus. (die kommen erst später hinzu ;) )

Danke schon mal im Voraus.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie soll das gehen... wenn ich dann schreibe

BufferedInputStream instream = zipFile.getInputStream();

passen die Types nicht zusammen. getInputStream() liefert einen Input Stream und keinen buffered. Einen anderen Stream kann ich aus dem FormFile nicht rausholen. Irgendwie casten? Geht das? Nutz das was?

Ich probiers mal aus... sollte der output dann wohl auch besser buffered sein, oder? Geht das mit FileOutputStream überhaupt buffered?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie soll das gehen...

Ein wenig Beschäftigung mit DesignPatterns in Kombination mit dem Lesen der Java API wirkt bei sowas manchmal Wunder.

Ganz konkret: Nartürlich kannst du nicht jeden InputStream in einen BufferedInputStream casten, aber durchaus als solchen dekorieren:

BufferedInputStream inStream = new BufferedInputStream(zipFile.getInputStream());

Analoges gilt für OutputStreams.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Funzt jetzt alles. Und zwar jetzt in einem Zehntel der Zeit!

Danke.

Falls Dich auch interessiert warum: Du hast Byte für Byte aus einem Zip-File gelesen. Für das Programm heißt das ganz grob: ZipFile öffnen, Byte lesen, ZipFile schließen. Und Du kannst Dir denken, daß das Öffnen und Lesen länger dauert als bei einer normalen Datei. Daher verwendest Du jetzt den buffered stream. Der liest nämlich gleich ein paar hundert Bytes statt nur einem.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...