【发布时间】:2013-04-02 16:37:22
【问题描述】:
理想情况下,我只想读取 zip 存档并将每个文件存储在准备编译的 Iterable 中。 (假设 zip 仅包含 .java 文件)
这样会很好,但这不起作用,因为我无法获取 zip 中每个文件的路径。
private ArrayList<String> javaFilePaths = new ArrayList<String>();
Iterable<? extends JavaFileObject> = fileManager.getJavaFileObjectsFromStrings(javaFilePaths);
是否可以让ArrayList 的每个元素成为存档中文件的路径?到目前为止,我只能通过 zip 存档并获取所有无用的文件名,因为当我调用 getJavaFileObjectsFromStrings(javaFilePaths); 时,它不会是文件的完整路径。也许我需要先将每个文件的内容存储在一个新的JavaFileObject 中?真的不确定解决这个问题的最佳方法......
有人可以帮忙解决这个问题吗,事实证明这很棘手!
UPDATE:
考虑将 zip 存档中的每个文件作为 File 对象存储在 File 类型的数组中
然后调用getJavaFileObjectsFromFiles(arrayOfFiles);方法。
解决方案、想法?
【问题讨论】:
-
不确定您要做什么,但请查看
java.util.zip.ZipInputStream -
@orid 我“认为”我需要遍历 zip 文件并将每个 .java 文件作为
File对象存储在File类型的数组/列表中 -
你不应该“思考”。你应该知道你需要什么以及你想问什么
-
您不能将
ZipEntry存储为 .java 文件,因为这些文件可能包含字节码,除非您确定它是包含一些工件源的JarInputStream -
@A.J 抱歉,我不是 Java 专家,我也不是什么都懂。这就是为什么我来到这里有很多经验的地方。我知道一般概念,但我不知道如何以编程方式进行。主要概念是用户浏览包含 Java 文件的 zip 存档,然后将 Java 文件临时存储在内存中,然后编译生成类文件。除了如何将 zip 文件夹中的文件存储到数组中之外,我一切正常。
标签: java arrays compiler-construction zip archive