While unzipping, ZipEntry returns foldername/filename instead of only fodername/ , and these throws File Not Found Exception

General Tech Bugs & Fixes 2 years ago

0 1 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (1)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

I'm creating zip from back-end using PHP. and I want to unzip at Android side.

My Folder structure of Zip includes

  • Folder 1
    • file
    • file
  • Folder 2
    • file
    • file
  • File

To create zip I use following code

foreach ($files as $name => $file)
                    {
                        // echo $file.'  --   ';
                        if (!$file->isDir())
                        {
                            $filePath = $file->getRealPath();
                            $relativePath = substr($filePath, strlen($rootPath) + 1);
                            //echo dirname($file);
                            $zip->addFile($filePath, $relativePath);

                        }
                    }

In android I use following code to unzip

        InputStream is;
        ZipInputStream zis;
        try {
            String filename;
            is = new FileInputStream(zipFile);
            zis = new ZipInputStream(new BufferedInputStream(is));
            ZipEntry ze;
            byte[] buffer = new byte[8192];
            int count;
            while ((ze = zis.getNextEntry()) != null) {
                filename = ze.getName();
                // it will show 
                // it will generate an Exception...
                if (ze.isDirectory()) {
                    File fmd = new File(location + filename);
                    fmd.mkdirs();
                    continue;
                }
                FileOutputStream fout = new FileOutputStream(location + filename);
                while ((count = zis.read(buffer)) != -1) {
                    fout.write(buffer, 0, count);
                }
                fout.close();
                zis.closeEntry();
            }
            zis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

But it's not getting me proper output which I needs.

I expect output at

ze.getName() is FolderName/

but I the actual output is

FolderName/filename

so it do not consider forward slash as directory and it throws File Not Found Exception.

0 views
0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.