G
Guest
Gast
hallo!
ich habe ein programm, welches hibernate mit hsql nutzt. hier habe ich ein objekt, welches ein byte[] nutzt um dateiinhalte zu speichern, welches dann in die db geschrieben wird. der byte[] inhalt geht in ein binary feld, so kann ich dateien direkt in der db ablegen und später wieder auslesen usw. das ganze funzt auch hervorragend, abgesehen davon, das natürlich das objekt mit dem byte[] bei großen dateien irgendwann die grätsche macht.
wenn ich das objekt initialisiere, wird die datei als parameter genommen und mit der folgenden methode in das byte[] zerlegt:
das ganze funtionier so bis ca 60 MB, danach hängt das programm sich auf.
gibt es eine möglichkeit das ganze so hin zu biegen, das einem nicht der arbeitsspeicher voll geschrieben wird bis nichts mehr geht?
ich habe ein programm, welches hibernate mit hsql nutzt. hier habe ich ein objekt, welches ein byte[] nutzt um dateiinhalte zu speichern, welches dann in die db geschrieben wird. der byte[] inhalt geht in ein binary feld, so kann ich dateien direkt in der db ablegen und später wieder auslesen usw. das ganze funzt auch hervorragend, abgesehen davon, das natürlich das objekt mit dem byte[] bei großen dateien irgendwann die grätsche macht.
wenn ich das objekt initialisiere, wird die datei als parameter genommen und mit der folgenden methode in das byte[] zerlegt:
Code:
Aufruf:
byte[] data = copyBytes(pData);
methode:
private byte[] copyBytes(File pData) throws IOException {
FileInputStream in = null;
ByteArrayOutputStream out = null;
try {
in = new FileInputStream(pData);
out = new ByteArrayOutputStream();
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
return out.toByteArray();
}
das ganze funtionier so bis ca 60 MB, danach hängt das programm sich auf.
gibt es eine möglichkeit das ganze so hin zu biegen, das einem nicht der arbeitsspeicher voll geschrieben wird bis nichts mehr geht?