2013-12-17 3 views
0

Я пытаюсь скопировать файл в свой путь к другому временному местоположению.Файл PDF с пустыми страницами, появляющимися после копирования с использованием Java Files.copy

Вот код для этого:

InputStream inputStream = this.getClass().getClassLoader() 
      .getResourceAsStream(readmeFile); 

    Path path = Paths.get(tempFilesOutputPath + File.separator + readmeFile); 
    try { 
     Files.copy(inputStream, path, StandardCopyOption.REPLACE_EXISTING); 
     inputStream.close(); 

    } catch (IOException e) { 
     throw e; 
    } 

readMeFile имеет 2 страницы, скопированный файл в папке tempFilesOutputPath также имеет две страницы, но без какого-либо содержания.

Пожалуйста, дайте мне знать, если я ошибаюсь, или это нужно сделать по-другому.

Cheers, Мадху

+1

Вы уверены, что ваш «InputStream» создается правильно? Попробуйте «this.getClass(). GetResourceAsStream()» и посмотрите, помогает ли это. – DeathByTensors

+0

InputStream был создан правильно, если я отправлю .txt-файл, тогда он будет правильно копироваться. –

+1

Bizarre ... Следующим шагом будет просмотр двоичного содержимого созданного файла, чтобы увидеть, что есть и что не копируется. Это может помочь вам лучше понять проблему. Например, если это только «верх» файла, то выходной буфер может быть неправильно очищен. – DeathByTensors

ответ

6

Выпуск был совершенно не связан. Я использую Maven скопировать ресурс для копирования ресурсов под моим SRC/основные/ресурсы/

это был мой Maven ресурс:

 <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.properties</include> 
       <include>**/*.xml</include> 
       <include>**/*.txt</include> 
       <include>**/*.html</include> 
       <include>**/*.pdf</include> 
      </includes> 
     </resource> 

Поскольку фильтрация была на PDF файл был скопирован в пустой DOCO к целевой папки.

Я просто разделил его на два ресурса, отфильтровывая файлы PDF.

 <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.properties</include> 
       <include>**/*.xml</include> 
       <include>**/*.txt</include> 
       <include>**/*.html</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>false</filtering> 
      <includes> 
       <include>**/*.pdf</include> 
      </includes> 
     </resource> 

Благодаря Дрю Бакли, я получил вопрос при попытке сделать двоичное сравнение файла. Фактический файл в проекте был другим, а другой в целевой папке, который копируется с maven, был другим.

Теперь он отлично работает.

+1

Рад, что все получилось! – DeathByTensors

3

Да, это сработало и для меня; в документации Maven я нашел this для получения дополнительной информации;

Предупреждение: не фильтруйте файлы с двоичным содержимым, как изображения! Это, скорее всего, приведет к повреждению. Если у вас есть как текстовые файлы, так и двоичные файлы в качестве ресурсов, вам необходимо объявить два взаимоисключающих набора ресурсов. Первый набор ресурсов определяет файлы для фильтрации, а другой набор ресурсов определяет файлы для копирования без изменения

+0

Я не уверен, что это действительно ответит на вопрос, и, вероятно, лучше оставить его в качестве комментария (когда у вас достаточно репутации) –

+1

i can not with my rep, так что я хотел бы поделиться тем, что нашел в документации maven, чтобы лучше объяснить причину проблемы –

+0

Я понимаю, и я/мы это ценим. Первые ответы рассматриваются, и мы должны помогать и поощрять новых пользователей; в то же время мы пересматриваем, следовательно, записку. –

Смежные вопросы