将多个文件保存为ZIP而不保存它们读他们回来

时间:2012-11-02 15:36:40

标签: android android-file

我正在从String的创建多个文件。

例如4个字符串;一个用xml和3个csv格式。

我的问题是,我必须首先将这些String保存到文件中,然后再读取它然后写出ZipOutputStream吗?看起来真的有点浪费。

提前致谢

1 个答案:

答案 0 :(得分:2)

所以这是我的解决方案,用于保存多个文件而无需先创建物理文件。小心字符串大小。

for (int i =0; i <stringArray.size();i++) {
                String outString = stringArray.get(i);
                String fileName = null;
                if (i == 0) {
                    fileName = "StringOne.xml";

                } else if (i == 1) {
                    fileName = "StringTwo.csv";
                } else if (i ==2) {
                    fileName = "StringThree.csv";
                } else if (i == 3) {
                    fileName = "StringFour.csv";
                }
                Log.d("ZipCreation", "Creating "+fileName);
                // SAVE THE STRING AS A BYTE ARRAY IN MEMORY INSTEAD OF CREATING AND SAVING TO A NEW FILE
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                DataOutputStream byteOut = new DataOutputStream(baos);
                byte[] data = stringArray.get(i).getBytes("UTF-8");
                byteOut.write(data);
                byteOut.close();
                byte[] input = baos.toByteArray();

                ZipEntry entry = new ZipEntry(fileName);
                entry.setSize(input.length);
                zos.putNextEntry(entry);
                zos.write(input);
                zos.closeEntry();
            }

希望这有助于某人