Eine Methode zum Speichern von PDF- und CSV-Dateien im BLOB-Typ von Oracle. Bis jetzt habe ich mich selten mit Byte-Arrays befasst, deshalb werde ich es aufschreiben, damit ich es in Zukunft nicht vergesse.
public byte[] convertFile(File file) {
try (FileInputStream inputStream = new FileInputStream(file);) {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
while(true) {
int len = inputStream.read(buffer);
if(len < 0) {
break;
}
bout.write(buffer, 0, len);
}
return bout.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
}
Basierend auf dem, was Sie mir in den Kommentaren gesagt haben, werde ich einige modifizierte Methoden schreiben.
Eine Version, die den Punkt behebt, dass die Endlosschleife währenddessen nicht cool ist und vergisst, ByteArrayoutputStream zu schließen. Die später beschriebene Methode ist einfacher. Wenn Sie also Java 7 oder höher verwenden, sollten Sie die Methode ② oder höher verwenden.
public byte[] convertFile(File file) {
File file = new File(dir + name);
try (FileInputStream inputStream = new FileInputStream(file);
ByteArrayOutputStream bout = new ByteArrayOutputStream();) {
byte[] buffer = new byte[1024];
int len = 0;
while((len = inputStream.read(buffer)) != -1) {
bout.write(buffer, 0, len);
}
return bout.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Verwendung von apache.commons.compress.utils.IOUtils.toByteArray. Jede Umgebung, in der Sie eine Bibliothek hinzufügen können, ist in Ordnung.
public byte[] convertFile(File file) throws IOException {
FileInputStream inputStream = new FileInputStream(file);
return IOUtils.toByteArray(inputStream);
}
Verwendung von java.nio.file.Files.readAllBytes (). Beachten Sie, dass es nur mit Java 7 oder höher verwendet werden kann.
public byte[] convertFile(File file) throws IOException {
return Files.readAllBytes(file.toPath());
}
Verwendung von java.io.InputStream.transferTo (). Bitte beachten Sie, dass es nur mit Java 9 oder höher verwendet werden kann.
public byte[] convertFile(File file) throws IOException {
FileInputStream inputStream = new FileInputStream(file);
return inputStream.transferTo(outputStream);
}
Recommended Posts