Программно сгенерированный почтовый индекс недействителен на ПК, но не на Android

РЕШЕНО: хорошо, значит, я в основном глуп. Я не смог открыть файл, потому что забыл установить winrar или 7zip, так как этот компьютер недавно отформатирован... Все работает нормально. Извините, что отнимаю чье-то время.

В моем приложении я программно генерирую файл .zip из файлов фотографий и файлов .csv в каталоге.

Он создает почтовый индекс, а затем отправляет электронное письмо с вложением без сбоев. Однако проблема заключается в том, что на моем компьютере я не могу извлечь файл .zip, потому что он говорит, что он недействителен, но на моем устройстве с помощью «WinZip» я могу проверить свой файл .zip, и в нем есть все, что он должен иметь. Это сбивает меня с толку.

Вот мой код: здесь я проверяю, какие флажки были отмечены, а затем делаю архивирование

for(int i = 0; i < cbStates.size(); ++i)
            {
                if(cbStates.get(i))
                {
                    String zipFile = Environment.getExternalStorageDirectory() + "/ArcFlash/" + listItems.get(i) + ".zip";//ex: /storage/sdcard0/ArcFlash/study12.zip
                    String srcDir = Environment.getExternalStorageDirectory() + "/ArcFlash/" + listItems.get(i);

                    try
                    {
                        FileOutputStream fos = new FileOutputStream(zipFile);

                        ZipOutputStream zos = new ZipOutputStream(fos);

                        File srcFile = new File(srcDir);

                        Log.i("customException", "going to compress");
                        addDirToArchive(zos, srcFile);

                        // close the ZipOutputStream
                        zos.close();
                    }

                    catch (IOException ioe)
                    {
                        System.out.println("Error creating zip file: " + ioe);
                    }

                    //Send the email
                    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
                    emailIntent.setType("application/image");
                    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
                    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Test Subject");
                    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "From My App");

                    String folderPath = Environment.getExternalStorageDirectory() + "/ArcFlash/" + listItems.get(i) + ".zip";
                    //Uri u = Uri.fromFile(folderPath);

                    //Log.i("customException", "uri path: " + u.getPath());
                    emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + folderPath));
                    startActivity(Intent.createChooser(emailIntent, "Send mail..."));

                    Toast.makeText(context,"Case \"" + studyName + "\" has been sent", Toast.LENGTH_LONG).show();
                    //adapter.setElement(i, adapter.getStudy(i) + "(sent)");
                }
            }

и вот функция zip:

private static void addDirToArchive(ZipOutputStream zos, File srcFile)
{
    File[] files = srcFile.listFiles();

    Log.i("customException", "Adding directory: " + srcFile.getName());

    for (int i = 0; i < files.length; i++)
    {
        // if the file is directory, use recursion
        if (files[i].isDirectory())
        {
            addDirToArchive(zos, files[i]);
            continue;
        }
        try
        {
            System.out.println("tAdding file: " + files[i].getName());

            // create byte buffer
            byte[] buffer = new byte[2048];//1024

            FileInputStream fis = new FileInputStream(files[i]);

            zos.putNextEntry(new ZipEntry(files[i].getAbsolutePath() + "/" + files[i].getName()));//files[i].getName()
            int length;
            while ((length = fis.read(buffer)) > 0)
            {
                zos.write(buffer, 0, length);
            }

            zos.closeEntry();

            // close the InputStream
            fis.close();
        }
        catch (Exception ex)
        {
            Log.i("customException", "error zipping: " + ex.getMessage());
        }
    }
}

person john    schedule 31.01.2014    source источник


Ответы (1)


хорошо, так что я в основном глупо. Я не смог открыть файл, потому что забыл установить winrar или 7zip, так как этот компьютер недавно отформатирован...

person john    schedule 04.03.2014