Hallo
mir ist aufgefallen, dass wenn ich mit einem InputStream übers Netzwerk mit read etwas lese und dabei einen Puffer von 1048576 verwende er immer nur 65536 zeichen einließt.
Kann man dies irgendwie ändern oder ist das hardwarebedingt?
danke
mir ist aufgefallen, dass wenn ich mit einem InputStream übers Netzwerk mit read etwas lese und dabei einen Puffer von 1048576 verwende er immer nur 65536 zeichen einließt.
Kann man dies irgendwie ändern oder ist das hardwarebedingt?
Code:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class SaveFile extends Thread {
private String dateiName;
private static int BUFFERSIZE = 100000;
private long dateigröße;
private InputStream in;
public SaveFile(String dateiName, long dateigröße, InputStream in) {
this.dateigröße = dateigröße;
this.dateiName = dateiName;
this.in = in;
}
public void run() {
if (dateiName.equals("no Datei")) {
System.out.println("keine gültige Datei");
} else {
try {
FileOutputStream f = new FileOutputStream(new File(dateiName));
try {
byte[] buffer;
if(dateigröße>= BUFFERSIZE){
buffer = new byte[BUFFERSIZE];
}else{
buffer = new byte[(int)dateigröße];
}
int größe = 0;
System.out.println("");
int read;
while ((größe <dateigröße)
&& ((read = in.read(buffer)) != -1)) {
f.write(buffer, 0, read);
größe += read;
System.out.println(read);
if (dateigröße <größe+BUFFERSIZE ){
if(dateigröße != größe){
buffer = new byte[(int)dateigröße-größe];
if ((read = in.read(buffer)) != -1){
f.write(buffer, 0, read);
größe += read;
größe += BUFFERSIZE;
}
}
}
}
f.flush();
System.out.println("Dateiübertragung erfolgreich");
System.out
.println("__________________________________________________________________________");
System.out.println("");
f.close();
} catch (FileNotFoundException e) {
System.out.println(e);
}
} catch (IOException e) {
System.out.println(e);
}
}
}
}
danke