0

/mnt/sdcard/Bluetooth複数のファイルを含むフォルダーがありzipます。この zip ファイルにはそれぞれ 1 つのファイルしか含まれていません。これらの各 zip ファイルのコンテンツを、各 zip ファイルのコンテンツを含む新しいファイルに抽出するにはどうすればよいですか? これは私がこれまでに行ったことです:

public class Main extends Activity {

Object[] arrayOfRarFiles;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    String path = "/mnt/sdcard/Bluetooth";
    String nameOfFiles;
    File folder = new File(path);
    File[] listOfFiles = folder.listFiles();

    for (int i = 0; i < listOfFiles.length; i++) {
        if (listOfFiles[i].isFile()) {
            nameOfFiles = listOfFiles[i].getName();

            if (nameOfFiles.endsWith(".zip")
                    || nameOfFiles.endsWith(".ZIP")) {

                try {
                    extractFile(nameOfFiles);
                } catch (FileNotFoundException e) {
                    Log.e("EXTRACTFILE SAYS: ", e.getMessage());
                }

            }
        }
    }
}

public void extractFile(String path) throws FileNotFoundException {

    String zipFileName = "/mnt/sdcard/Bluetooth/" + path;
    String extractedFileName = getApplicationContext().getFilesDir()
            .getPath().toString()
            + "Finger.FIR";

    ZipInputStream inStream = new ZipInputStream(new FileInputStream(
            zipFileName));
    OutputStream outStream = new FileOutputStream(extractedFileName);





    Toast.makeText(getApplicationContext(), zipFileName,
            Toast.LENGTH_SHORT).show();

}

メソッドの最後のトーストは、extractFile各 zip ファイルの名前を出力します。zip フォルダー内のファイルは.FIRファイルです。

4

1 に答える 1

1

別のSO questionで見つけた次の関数を使用できると思います。

必要に応じて、パスとファイル名のパラメーターを正しく設定するように注意してください。

public void extractFile(String path) throws FileNotFoundException {

    String zipFileName = "/mnt/sdcard/Bluetooth/" + path;
    String extractedFileName = getApplicationContext().getFilesDir()
            .getPath().toString()
            + "Finger.FIR";

    ZipInputStream inStream = new ZipInputStream(new FileInputStream(
            zipFileName));
    OutputStream outStream = new FileOutputStream(extractedFileName);

    unpackZip(path ,zipFileName)



    /*Toast.makeText(getApplicationContext(), zipFileName,
            Toast.LENGTH_SHORT).show();*/

}

private boolean unpackZip(String path, String zipname)
{       
     InputStream is;
     ZipInputStream zis;
     try 
     {
         String filename;
         is = new FileInputStream(path + zipname);
         zis = new ZipInputStream(new BufferedInputStream(is));          
         ZipEntry ze;
         byte[] buffer = new byte[1024];
         int count;

         while ((ze = zis.getNextEntry()) != null) 
         {
             // zapis do souboru
             filename = ze.getName();
             FileOutputStream fout = new FileOutputStream(path + filename);

             // cteni zipu a zapis
             while ((count = zis.read(buffer)) != -1) 
             {
                 fout.write(buffer, 0, count);             
             }

             fout.close();               
             zis.closeEntry();
         }

         zis.close();
     } 
     catch(IOException e)
     {
         e.printStackTrace();
         return false;
     }

    return true;
}
于 2012-07-26T13:11:16.720 に答える