在上传

时间:2016-01-31 22:00:48

标签: java spring-mvc

我有网络应用程序,用户登录他的帐户并可以下载该程序。程序是zip格式,里面有配置文件(.txt)。 我想做什么:

  1. 使用此zip /配置文件(.txt)
  2. 更改配置文件中的参数
  3. 使用新配置文件向用户发送整个zip文件
  4. 我知道如何向用户发送zip,但是在同一时间可以有多个用户的情况下,每个用户在zip中修改文件并发送它的最佳方法是什么。

    修改 我如何按用户分割它,例如,我有两个用户同时点击下载,所以我的服务器应该为每个用户准备两个不同的拉链,但我该怎么做。正如EJP所提到的,我无法修改zip,首先我应该解压缩,但是我应该在哪里保存临时的解压缩文件以保证每个线程的安全。有没有最好的办法呢?

3 个答案:

答案 0 :(得分:0)

你做不到。你必须解压缩,更改,重新压缩,发送。 ZIP文件不是文件系统。

Java 8中有某种ZIP文件系统,但它必须在上面做。

答案 1 :(得分:0)

您可以使用File.createTempFile创建临时文件。然后将配置文件的内容复制到临时文件中。现在你有了文件的线程安全副本,你可以毫不费力地修改它。

答案 2 :(得分:0)

实际上你可以使用NIO FileSystem API(它仍然会在幕后重新压缩,但你不必担心它):

Path zipPath = Paths.get("/path/to/file.zip");
FileSystem zipFS = FileSystems.newFileSystem(path, null);
Path pathInZip = zipFS.getPath("/test.txt");

String s = Resources.toString(pathInZip.toUri().toURL(), Charsets.UTF_8);
System.out.println(s);

Files.write(pathInZip, "Hello World!".getBytes(Charsets.UTF_8), StandardOpenOption.TRUNCATE_EXISTING);
zipFS.close();