当前位置: 首页 > 知识库问答 >
问题:

使用Spring引导将zip File从应用程序资源文件夹复制到目标

潘兴朝
2023-03-14

在使用SpringBoot应用程序将zip文件(包含两个RPM文件)从资源文件夹复制到目标文件夹时,我遇到了一个问题。它确实在目标文件夹路径上创建了zip文件,但它没有包含所有文件,并且创建的文件已损坏。请参阅附件

我已经通过了几个链接,但似乎解决方案并不完美

  1. 如何从资源文件夹中获取文件。Spring框架

代码:

 ClassPathResource cpr = null;
            cpr = new ClassPathResource("/16.00/package.zip");
            try {
                InputStream data = cpr.getInputStream();
                File targetFile = new File("C:\\package.zip");
                java.nio.file.Files.copy(
                        data, 
                          targetFile.toPath(), 
                          StandardCopyOption.REPLACE_EXISTING);
                        IOUtils.closeQuietly(data);
                log.info("w"+data);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

共有1个答案

闻人景澄
2023-03-14

不知道为什么你认为你的代码会产生一个Zip文件,你只是把文件复制到一个文件中,这只会产生随机字节。您需要专门创建Zip文件和zipstream。这里有一个实用的方法。。。

public static void addToZipFile(String zipFile, String[] filesToZip) throws Exception 
{
    // Create a buffer for reading the files
    byte[] buf = new byte[1024];

    // Create the ZIP file
    String outFilename = zipFile;
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));

    // Compress the files
    for (int i = 0; i < filesToZip.length; i++) 
    {
        FileInputStream in = new FileInputStream(filesToZip[i]);

        // Add ZIP entry to output stream.
        out.putNextEntry(new ZipEntry(FilenameUtils.getName(filesToZip[i])));

        // Transfer bytes from the file to the ZIP file
        int len;
        while ((len = in.read(buf)) > 0) 
        {
            out.write(buf, 0, len);
        }

        // Complete the entry
        out.closeEntry();
        in.close();
    }

    // Complete the ZIP file
    out.close();

}
 类似资料:
  • 我正在尝试使用将应用程序容器中的文件夹复制到本地Windows文件夹。该设备运行的是Android5.1.1,没有根。 以下方法不起作用: 方法1 错误:找不到设备 cp:/data/data/droidsample.droidsample/files/metrolog/metrologs是一个目录(未复制)。 这也是行不通的。 方法5 cp:/data/data/droidsample.droi

  • 问题内容: 我想在应用程序的第一次运行中将一个很大的目录从我的应用程序的Assets文件夹复制到data文件夹。我怎么做?我已经尝试过一些示例,但是没有用,所以我什么都没有。我的目标是Android 4.2。 谢谢,Yannik 问题答案: 尝试使用您的Application实例的以下代码(您应该在清单中编写该类):该代码将资产/文件文件夹的内容复制到应用程序的缓存文件夹中(您可以将其他路径放在c

  • 我花了好几个小时寻找答案,但我还是想不出答案,我正试图将包含我正在处理的游戏的所有图像和数据文件的资源文件夹从运行的jar中复制到e:/program files/mtd中/当我从eclipse中运行它时,它工作得很好,但当我导出jar并尝试它时,我得到了NoSuchFileException

  • 有一个Spring应用程序“A”打包为JAR(带有maven),应用程序“A”的POM文件包含一些定义的特定maven依赖项。 在另一个打包为JAR的spring boot应用程序“B”中,添加了应用程序“A”的依赖项,但在执行“B”时,它对应用程序“A”中提到的依赖项抛出了几个ClassNotFound/NoClassDef错误。 注意-应用程序“A”不是一个引导项目。这是一个简单的用maven

  • 问题内容: 我想执行构建后步骤,以使用MSDeploy将某些文件复制到网站文件夹中。 最终,我将在远程位置执行此操作(指定,开关等),但是现在我在本地运行: 此方法有效,但是它将删除网站文件夹的 所有 内容,并将其替换为“ D:\ files_to_copy”的内容(如您所料!)。因此,我想知道如何将其简单地复制到站点的子文件夹中? 我已经尝试过了,但这只是创建了一个嵌套在现有IIS应用程序中的新

  • 如何使用将文件夹从远程复制到本地主机? 我使用登录我的服务器。 然后,我要将远程文件夹复制到本地。 我如何实现这一点?