Une méthode créée pour stocker des fichiers PDF et des fichiers CSV dans le type BLOB d'Oracle. Jusqu'à présent, j'ai rarement traité des tableaux d'octets, je vais donc l'écrire pour ne pas l'oublier à l'avenir.
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();
}
}
J'écrirai quelques méthodes modifiées basées sur ce que vous m'avez dit dans les commentaires.
Une version qui corrige le fait que la boucle infinie par while n'est pas cool et oublie de fermer ByteArrayoutputStream. La méthode décrite plus loin est plus simple, donc si vous utilisez Java 7 ou supérieur, vous devez utiliser la méthode ② ou une version ultérieure.
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;
}
Comment utiliser apache.commons.compress.utils.IOUtils.toByteArray. Tout environnement dans lequel vous pouvez ajouter une bibliothèque est OK.
public byte[] convertFile(File file) throws IOException {
FileInputStream inputStream = new FileInputStream(file);
return IOUtils.toByteArray(inputStream);
}
Comment utiliser java.nio.file.Files.readAllBytes (). Notez qu'il ne peut être utilisé qu'avec Java 7 ou supérieur.
public byte[] convertFile(File file) throws IOException {
return Files.readAllBytes(file.toPath());
}
Comment utiliser java.io.InputStream.transferTo (). Veuillez noter qu'il ne peut être utilisé qu'avec Java 9 ou supérieur.
public byte[] convertFile(File file) throws IOException {
FileInputStream inputStream = new FileInputStream(file);
return inputStream.transferTo(outputStream);
}
Recommended Posts