Java-код в AIX 3.5 не работает, в RHEL 7.5 происходит сбой: он делает поврежденные файлы DOC, DOCX, XLS, XLSX, но хорошими файлами HTML - PullRequest
1 голос
/ 08 апреля 2019

У нас есть процесс Java (см. Ниже) для генерации DOC, DOCX, XLS, XLSX и HTML и сохранения его на наших компьютерах с Linux.Он хорошо работал на нашей старой машине AIX 3.5;но в нашей новой машине RHEL 7.5, проприетарных форматах документов Microsoft (DOCX, DOC, XLSX и XLS), ее выходные данные повреждены.Файлы HTML не повреждены.

Я загрузил выходные файлы на ПК с Windows и попытался открыть их;Ошибки исключения говорят о том, что файлы DOC / DOCX / XLS / XSLX повреждены и не могут быть открыты.

Код Java хорошо работает на старом ПК с Linux.Я предполагаю, что на новом ПК могут быть установлены некоторые библиотеки или программное обеспечение.

Ниже приведен мой java-код (процесс создания файла)

int BUFFER_SIZE = 1024 * 256;

           int bytesRead=0;
           Resultset rs=obj.resultSet();
           DocumentClass = new DocumentClass();
           ByteArrayOutputStream baos  = new ByteArrayOutputStream();
           byte[] buffer = new byte[BUFFER_SIZE];
           BufferedInputStream bis = new BufferedInputStream(rs.getBinaryStream(1));

           try
           {
                bytesRead = bis.read(buffer,0,BUFFER_SIZE);
                while (bytesRead > 0)
                {
                   baos.write(buffer, 0, bytesRead);
                   buffer = new byte[BUFFER_SIZE];
                   bytesRead = bis.read(buffer,0,BUFFER_SIZE);
                }
           }
          catch (IOException io ) 
           {
             System.out.println(io.getMessage());
           } 

           DocumentClass.setFileBody(baos);
           BufferedWriter CreateDoc = new BufferedWriter(new FileWriter("/usr/Test.docx"));
            CreateDoc.write(DocumentClass.getFileBody().toString());
            CreateDoc.close();
...