Kopieren beschleunigen

Status
Nicht offen für weitere Antworten.

m@nu

Bekanntes Mitglied
hi zusammen

ich benutz' folgenden code um eine datei zu kopieren:

Code:
/* Kopieren: */
// Vorbereiten:
InputStream input = FileInputStream("C:\\test.jpg");
OutputStream output = new BufferedOutputStream(new FileOutputStream("C:\\test copy.jpg"));
byte[] buffer = new byte[4096];

// Durchführen:
while((input.read(buffer)) != -1) {
    output.write(buffer);
}
input.close();
output.close();

ich persönlich find' jetzt dass es relativ lange geht, um auch nur kleine dateien so zu kopieren...
gibt es vielleicht diverse kniffe welche das kopieren beschleunigen? (vielleicht grösserer buffer? andere streams? ...)

vielen dank & grüsse
m@nu
 
Mit nem BufferedInputStream vielleicht? Und bringt es was wenn du den internen Buffer (siehe Konstruktor) vom BufferedOutputStream größer machst?
und mach mal so:
Code:
int l;
while((l = input.read(buffer)) != -1) {
    output.write(buffer, 0, l);
}
Sonst kannst du das kopierte Bild in dem meisten Fällen nicht mehr gebrauchen.
 
danke für den tipp mit der länge... hab mich das kürzlich gefragt ob es da vielleicht je nachdem nicht zu problemen kommen kann.

die anderen anregungen haben beim ersten versuch nicht wirklich verbesserungen gebracht. aber i sollte das ganze eh einmal zuhause auf meinem rechner ausprobieren... hier auf der arbeit macht der computer momentan einige zicken grml 😉
 
Oder mit "java.nio.channels.*":

Code:
    File inputFile = new File(src);
    File outputFile = new File(dest);

    FileInputStream in = new FileInputStream(inputFile);
    FileOutputStream out = new FileOutputStream(outputFile);

    FileChannel inc = in.getChannel();
    FileChannel outc = out.getChannel();

    inc.transferTo(0, inc.size(), outc);

    inc.close();
    outc.close();

    in.close();
    out.close();
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben