Java вернуть InputStream из строки, преобразованной Apache IOUtils

Я использую библиотеку Sharepoint-Java-API для загрузки файлов из Sharepoint.
Я могу загрузить файл, но получил формат String , который конвертируется с использованием org.apache.commons.io.IOUtils в качестве

      public static String get(Pair<String, String> token, String url) {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    try {
        HttpGet getRequest = new HttpGet(url);
        getRequest.addHeader("Cookie", token.getLeft() + ";" + token.getRight());
        getRequest.addHeader("accept", "application/json;odata=verbose");
        HttpResponse response = httpClient.execute(getRequest);
        if (response.getStatusLine().getStatusCode() == 200) {
            return IOUtils.toString(response.getEntity().getContent(), "utf-8");
        } else {
            System.err.println("Failed : HTTP error code : " + response.getStatusLine().getStatusCode() + ", " + url);
            return null;
        }
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            httpClient.close();
        } catch (IOException ex) {
            Logger.getLogger(SPOnlineMFT.class).error(ex);
        }
    }
    return null;
}

Теперь я пытаюсь преобразовать его в InputStream и сохранить в локальной файловой системе для тестирования.

Абонент: -

      String content = SPOnline.get(token, domain, url );
if (content != null) {
    File targetFile = new File("D:\\Rivian\\SharePoint\\TempDownload/"+fileName);
//  InputStream stream = new ByteArrayInputStream(content.getBytes("utf-8"));
    InputStream stream = IOUtils.toInputStream(content, "utf-8");
    Files.copy(stream, targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
    System.out.println("File Downloaded")
}

но я не могу читать / открывать файл, например файл MS Excel. При открытии файла появляется сообщение о том, что файл поврежден.

1 ответ

Просто напишите байтовый массив прямо в файл, не конвертируя его в строку utf-8.

      import java.nio.file.Files;
import java.nio.file.Path;

Path file = Path.of("D:\\SharePoint\\TempDownload/"+fileName);
Files.write(file, response.getEntity().getContent()));
Другие вопросы по тегам