رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

سلام

فرض کنید من چنتا پوشه تو پوشه assets دارم که تو هرکدوم چند تا فایله حالا چجوری پوشه هارو باهم تو حافظه گوشی کپی کنم

اگه شد یکم سریع تر بگید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

برای اینکار میتوانید بدین صورت عمل کنید

[shcode=java]

private void copyFolder(String name) {

            // "Name" is the name of your folder!

    AssetManager assetManager = getAssets();

    String[] files = null;

    String state = Environment.getExternalStorageState();

    if (Environment.MEDIA_MOUNTED.equals(state)) {

        // We can read and write the media

        // Checking file on assets subfolder

        try {

            files = assetManager.list(name);

        } catch (IOException e) {

            Log.e("ERROR", "Failed to get asset file list.", e);

        }

        // Analyzing all file on assets subfolder

        for(String filename : files) {

            InputStream in = null;

            OutputStream out = null;

            // First: checking if there is already a target folder

            File folder = new File(Environment.getExternalStorageDirectory() + "/yourTargetFolder/" + name);

            boolean success = true;

            if (!folder.exists()) {

                success = folder.mkdir();

            }

            if (success) {

                // Moving all the files on external SD

                try {

                    in = assetManager.open(name + "/" +filename);

                    out = new FileOutputStream(Environment.getExternalStorageDirectory() +

"/yourTargetFolder/" + name + "/" + filename);

                    Log.i("WEBVIEW", Environment.getExternalStorageDirectory() +

"/yourTargetFolder/" + name + "/" + filename);

                    copyFile(in, out);

                    in.close();

                    in = null;

                    out.flush();

                    out.close();

                    out = null;

                } catch(IOException e) {

                    Log.e("ERROR", "Failed to copy asset file: " + filename, e);

                } finally {

                    // Edit 3 (after MMs comment)

                    in.close();

                    in = null;

                    out.flush();

                    out.close();

                    out = null;

                }

            }

            else {

            }      

        }

    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {

    } else {

    }

}

// Method used by copyAssets() on purpose to copy a file.

private void copyFile(InputStream in, OutputStream out) throws IOException {

    byte[] buffer = new byte[1024];

    int read;

    while((read = in.read(buffer)) != -1) {

        out.write(buffer, 0, read);

    }

}

[/shcode]

اسم پوشه خود را در داخل function مربوطه بنویسید تا کلیه فایل های داخل پوشه کپی شوند.

برای کپی کردن چند پوشه فقط به هر تعدادی که نیاز دارید تابع  را دوباره صدا بزنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

یک سوال دیگه

فکر کنید تو یه پوشه تو حافظه خارجی یک تعداد عکس داریم که فرمتشون معلومه 

چجوری عکس هایی رو که با یک عبارت خاص مثلا «ترول» شروع میشن رو تو اون پوشه حذف کنیم؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

File index = new File("masir");

String[]entries = index.list();

for(String s: entries){

File currentFile = new File(index.getPath(),s);

currentFile.delete();

}

لینک ارسال
به اشتراک گذاری در سایت های دیگر

برای اینکار میتوانید بدین صورت عمل کنید

[shcode=java]

private void copyFolder(String name) {

            // "Name" is the name of your folder!

    AssetManager assetManager = getAssets();

    String[] files = null;

    String state = Environment.getExternalStorageState();

    if (Environment.MEDIA_MOUNTED.equals(state)) {

        // We can read and write the media

        // Checking file on assets subfolder

        try {

            files = assetManager.list(name);

        } catch (IOException e) {

            Log.e("ERROR", "Failed to get asset file list.", e);

        }

        // Analyzing all file on assets subfolder

        for(String filename : files) {

            InputStream in = null;

            OutputStream out = null;

            // First: checking if there is already a target folder

            File folder = new File(Environment.getExternalStorageDirectory() + "/yourTargetFolder/" + name);

            boolean success = true;

            if (!folder.exists()) {

                success = folder.mkdir();

            }

            if (success) {

                // Moving all the files on external SD

                try {

                    in = assetManager.open(name + "/" +filename);

                    out = new FileOutputStream(Environment.getExternalStorageDirectory() +

"/yourTargetFolder/" + name + "/" + filename);

                    Log.i("WEBVIEW", Environment.getExternalStorageDirectory() +

"/yourTargetFolder/" + name + "/" + filename);

                    copyFile(in, out);

                    in.close();

                    in = null;

                    out.flush();

                    out.close();

                    out = null;

                } catch(IOException e) {

                    Log.e("ERROR", "Failed to copy asset file: " + filename, e);

                } finally {

                    // Edit 3 (after MMs comment)

                    in.close();

                    in = null;

                    out.flush();

                    out.close();

                    out = null;

                }

            }

            else {

            }      

        }

    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {

    } else {

    }

}

// Method used by copyAssets() on purpose to copy a file.

private void copyFile(InputStream in, OutputStream out) throws IOException {

    byte[] buffer = new byte[1024];

    int read;

    while((read = in.read(buffer)) != -1) {

        out.write(buffer, 0, read);

    }

}

[/shcode]

اسم پوشه خود را در داخل function مربوطه بنویسید تا کلیه فایل های داخل پوشه کپی شوند.

برای کپی کردن چند پوشه فقط به هر تعدادی که نیاز دارید تابع  را دوباره صدا بزنید

من این کد رو کپی کردم اسم پوشم که hi هست رو تو یک دکمه تو تابع نوشتم

ولی هیچ چیز کپی نشد

دسترسی هارو هم نوشتم

قبلا از کد زیر استفاده می کردم که جواب می داد ولی همه پوشه هارو کپی می کرد

[shcode=java]

private void CopyAssets() {

         File f = new File(Environment.getExternalStorageDirectory()+"/folder11/");

         if(!f.exists()){

             f.mkdir();

         }

             AssetManager assetManager = getAssets();

            String[] files = null;

                try {

                    files = assetManager.list("");

                } catch (IOException e) {

                    Log.e("tag", e.getMessage());

                }

         

                for(String filename : files) {

                    InputStream in = null;

                    OutputStream out = null;

                    try {

                      in = assetManager.open(filename);  

                      out = new FileOutputStream(Environment.getExternalStorageDirectory().toString() +"/folder11/" + filename);

                      copyFile(in, out);

                      sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://"+ f)));

                      in.close();

                      in = null;

                      out.flush();

                      out.close();

                      out = null;

                    } catch(Exception e) {

                        Log.e("tag", e.getMessage());

                    }

                }

            }

            private void copyFile(InputStream in, OutputStream out) throws IOException {

                byte[] buffer = new byte[1024];

                int read;

                while((read = in.read(buffer)) != -1){

                  out.write(buffer, 0, read);

                 

                }

            }

[/shcode]

یه بار دیگه میگم

توی پوشه assets چند پوشه وجود دارد که یکی از آن ها پوشه ای به نام hi است که شامل چند عکس می باشد. می خام اون پوشه رو همراه با محتویاتش توی فولدر folder11 در حافظه بریزم که قبلا این پوشه وجود ندارد یعنی مسیر عکس های درون hi بشود folder11/hi/

لطفا جواب بدید:rolleyes:

خیلی حیاتیه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دیگه زحمت نکشین حل شد

اگه اون پوشه اصلی تو حافظه نباشه کار نمیکنه

پس باید یکبار پوشه folder11 رو ایجاد کنیم بعد پوشه بعدی رو توش بسازیم

همزمان نمیشه

با تشکر از خودم:D:D:D:D:D:D:D:D:D

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...