在组织内部的Java-Copy file.txt,它是A.jar中的文件夹而不提取z.jar文件

时间:2018-02-05 10:07:50

标签: java zip

我试图将文件复制到A.jar(不提取它),但它没有工作。假设我有文件" copy.txt"在" D:\ java \ copy.txt"我希望将此文件复制到我的" A.jar / org / here" 。如果文件已经存在,那么它应该替换它。

我尝试修改下面的代码,但它没有用。

import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class deploy {
public static void main(String[] argv) {
    Path myFilePath = Paths.get("C:/Users/ma329300/Desktop/copy.txt");

    Path zipFilePath = Paths.get("D:/java/A.jar");
    try( FileSystem fs = FileSystems.newFileSystem(zipFilePath, null) ){
        Path fileInsideZipPath = fs.getPath("/org/copy.txt");
        Files.copy(myFilePath, fileInsideZipPath);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
}

1 个答案:

答案 0 :(得分:0)

首先,检查你的路径。 Java对于路径来说真的很棘手,应该是完整的路径形式。 尝试将反斜杠放在" D:\ java \ A.jar"中,因为windows的工作方式与linux不同。

此外,如果您更改文件并重新编译,则每次都会生成一个新的.jar,其中包含您要更改的更新文件。这样就可以解决您的问题而无需在外部访问.jar。

我尝试过一次访问.jar中包含的库,并使用.jar中的代码加载它们并且没有正常工作,所以要小心。

你应该注意的另一件事是你不能在没有解压缩的情况下直接修改.jar,因为它使用一个特殊的algorythm来为java和java正确地完成索引。更改.jar的一个特定部分可能会破坏数据并使其在运行时崩溃。

希望它有所帮助。