بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
بدست آوردن سایز یک پوشه
باسلام،
من در برنامه ام باید سایز و تعداد فایلهای موجود در یک فولدر رو دریافت کنم؛ پس از کدهای زیر استفاده کردم ؛ ولی، ولی برنامم رو که اجرا می کنم حدود 4-5 ثانیه صفحه سفیده ، بعد UI میاد بالا که این فاجعس! مشخصه که به خاطر دریافت سایز فولدر و ... از این حرفاس!
خواستم از طریق Thread , RunOnUiThread, Runnable, AsyncTask و ... مشکلش رو حل کنم اما نشد و مشکل هنوز پا برجاست ، شایدم من بلد نیستم!
از دوستان که استادن خواهش دارم که مشکل بنده رو حل کنند؛
فیلدهـــا:
private File folder_path = new File(Environment.getExternalStorageDirectory() + "/Android/icm/");
private CircularProgressBar circularProgressBar;
private int folderSize = 0;
private int fileNumber = 0;
متد OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
Some Code Here!
*/
initUi();
initSize();
}
متد initUi , initSize :
private void initSize() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
folderSize = (int) folderSize(folder_path);
fileNumber = (int) getNumber(folder_path);
}
});
thread.start();
}
private void initUi() {
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView text_files_number = (TextView) findViewById(R.id.text_cash_number);
circularProgressBar.setSubTitle("KB");
circularProgressBar.setTitle("" + folderSize);
circularProgressBar.setProgress(folderSize);
text_files_number.setText(String.valueOf(fileNumber));
}
});
}
متد های مربوط به گرفتن سایز و تعداد فایلها:
public long folderSize(File directory) {
long length = 0;
for (File file : directory.listFiles()) {
if (file.isFile())
length += file.length();
else
length += folderSize(file);
}
return convertByteToKb(length);
}
private long convertByteToKb(long paramLong) {
long sizeinKB = paramLong / 1024L;
return sizeinKB;
}
private long getNumber(File file) {
if (file.isDirectory()) {
return file.list().length;
}
return 0;
}
باتشـکر.
+1
0
فکرنکنم نیاز به این کارها باشه شما میتونید با استفاده از متد ()length سایز فایل رو دریافت کنید ! (10 سال پیش)
0
0
منطق کدهاتون درست نیست، الان به احتمال ۹۹ درصد همون صفر هایی که نوشتین براتون به نمایش میان، پیشنهاد میکنم از AsyncTask استفاده کنید، اول متغییر هاتون مقدار دهی میشن (محاسبه سایز و تعداد) بعد مقدارشون توی View هاتون به نمایش درمیاد. (10 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .