mamad

کار با پوشه ها

9 ارسال در این موضوع قرار دارد

سلام

فرض کنید من چنتا پوشه تو پوشه 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:

خیلی حیاتیه

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


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

اشکال از کجاست

جواب بدین دیگه

البته با تشکر از Azam Nuri

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


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

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

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

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

همزمان نمیشه

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

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری