使用Java Files.copy复制后出现空页的PDF文件

时间:2013-12-17 00:06:17

标签: java file pdf 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文件夹中的复制文件也有两个页面但没有任何内容。

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

干杯, 马杜

2 个答案:

答案 0 :(得分:7)

问题完全不相关。我正在使用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文件被复制为空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>

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

现在工作正常。

答案 1 :(得分:4)

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

  

警告:请勿使用图像等二进制内容过滤文件!这很可能会导致输出损坏。如果您同时拥有文本文件和二进制文件作为资源,则需要声明两个互斥的资源集。第一个资源集定义要过滤的文件,另一个资源集定义要不加改变的文件