我有网络应用程序,用户登录他的帐户并可以下载该程序。程序是zip格式,里面有配置文件(.txt)。 我想做什么:
我知道如何向用户发送zip,但是在同一时间可以有多个用户的情况下,每个用户在zip中修改文件并发送它的最佳方法是什么。
修改 我如何按用户分割它,例如,我有两个用户同时点击下载,所以我的服务器应该为每个用户准备两个不同的拉链,但我该怎么做。正如EJP所提到的,我无法修改zip,首先我应该解压缩,但是我应该在哪里保存临时的解压缩文件以保证每个线程的安全。有没有最好的办法呢?
答案 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();