【问题标题】:PDF file with empty pages appearing after Copying using Java Files.copy使用 Java Files.copy 复制后出现空白页的 PDF 文件
【发布时间】:2014-01-04 14:04:23
【问题描述】:

我正在尝试将我的类路径中的文件复制到另一个临时位置。

这是它的代码:

    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 文件夹中的复制文件也有 2 页,但没有任何内容。

如果我犯了一些错误或者必须以不同的方式完成,请告诉我。

干杯, 马杜

【问题讨论】:

  • 您确定您的“InputStream”创建正确吗?试试“this.getClass().getResourceAsStream()”看看是否有帮助。
  • InputStream 已正确创建,因为如果我发送 .txt 文件,那么它会正确复制。
  • Bizarre... 我的下一步是查看已创建文件的二进制内容,以查看哪些是复制的,哪些没有被复制。它可能会帮助您更好地理解问题。例如,如果它只是文件的“顶部”,则可能无法正确刷新输出缓冲区。

标签: java file pdf copy


【解决方案1】:

是的,这对我也有用; 在 Maven 文档中,我找到了this 以获取更多信息;

警告:请勿过滤包含图像等二进制内容的文件!这很可能会导致输出损坏。如果你有文本文件和二进制文件作为资源,你需要声明两个互斥的资源集。第一个资源集定义要过滤的文件,另一个资源集定义要原样复制的文件

【讨论】:

  • 我不确定这是否真的回答了这个问题,最好留下评论(当你有足够的代表时)
  • 我不能和我的代表交流,所以我想分享我在 maven 文档中找到的内容,以更好地解释问题的原因
  • 我理解,我/我们对此表示感谢。第一个答案经过审核,我们应该帮助和鼓励新用户;同时,我们正在接受审查,因此需要注意。
【解决方案2】:

问题完全不相关。我正在使用 maven 复制资源来复制我的 src/main/resources/ 下的资源

这是我的 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 文件,因此被作为空文档复制到目标文件夹。

我只是将它分成两个资源,过滤掉 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>

感谢 Drew Buckley,我在尝试对文件进行二进制比较时遇到了问题。项目中的实际文件不同,从 maven 复制的目标文件夹中的文件也不同。

现在可以正常使用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多