У меня есть требование сохранить загруженную электронную таблицу на диск. Я использую приведенный ниже код, чтобы сделать то же самое, и получение файла является поврежденной ошибкой от excel.Сохранение таблицы на диск с использованием java
byte[] bytes = null;
File uploadedFile = new File("D://xlsxTest//BNG Issue.xlsx");
File file = new File("D://xlsxTest//sample1.xlsx");
FileOutputStream outStream = null;
InputStream inputStream = null;
try{
if(!file.exists()){
file.createNewFile();
}
outStream = new FileOutputStream(file);
if (uploadedFile != null) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
inputStream = new FileInputStream(uploadedFile);;
int c = 0;
while (c != -1) {
c = inputStream.read();
byteArrayOutputStream.write((char) c);
}
bytes = byteArrayOutputStream.toByteArray();
}
outStream.write(bytes);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
outStream.close();
}catch(Exception e){
e.printStackTrace();
}
}
Я пробовал использовать файл размером 83 КБ, а полученный файл - 82.5KB. Любая помощь будет оценена по достоинству. Спасибо.
Похоже, вы сохранили его правильно и не можете прочитать текст внутри? –
Попробуйте добавить 'outStream.flush()' перед тем, как закрыть его. – Berger
Невозможно воспроизвести. Вы код просто добавляет дополнительный байт (-1) в конце файла, потому что тест для конца файла происходит ** после ** записи. Но это не должно приводить к более короткой копии. Можете ли вы подтвердить, что с приведенным выше кодом «D: //xlsxTest//sample1.xlsx» короче, чем «D: // xlsxTest // BNG Issue.xlsx»? –