Ich habe eine Anforderung, die hochgeladene Kalkulationstabelle auf der Festplatte zu speichern. Ich benutze den folgenden Code, um das gleiche zu tun und die Datei ist beschädigt Fehler von der Excel.Speichern einer Tabelle auf der Festplatte mit 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();
}
}
Ich versuchte mit einer Datei von 83 KB Größe und die resultierende Datei ist 82,5 KB. Jede Hilfe wäre willkommen. Danke.
Sieht aus wie Sie es richtig speichern und den Text nicht lesen können? –
Versuchen Sie, outStream.flush() 'hinzuzufügen, bevor Sie es schließen. – Berger
Kann nicht reproduziert werden. Ihr Code fügt einfach ein zusätzliches Byte (-1) am Ende der Datei hinzu, da der Test für das Dateiende ** nach dem Schreiben stattfindet. Aber es sollte nie zu einer kürzeren Kopie führen. Können Sie bestätigen, dass der obige Code "D: //xlsxTest//sample1.xlsx" kürzer als "D: // xlsxTest // BNG Issue.xlsx" ist? –