解决方案 »

  1.   

    long FileSizes = myFile.length();
                DecimalFormat df = new DecimalFormat("#.00");
                System.out.println(df.format(FileSizes));
                listItem.put("size",
                 "文件大小:" + (df.format(FileSizes)));
    我这个输出的全都是00,代码哪里有问题吧,麻烦大神指导下
      

  2.   


    getTotalSpace这个方法看看哥们,时间也不行,我没仔细看,输出的时间都是1970年,是权限问题么,求指点,万分感激啊
      

  3.   


    getTotalSpace这个方法看看哥们,时间也不行,我没仔细看,输出的时间都是1970年,是权限问题么,求指点,万分感激啊你访问的是哪个目录下的文件?
      

  4.   


    getTotalSpace这个方法看看哥们,时间也不行,我没仔细看,输出的时间都是1970年,是权限问题么,求指点,万分感激啊你访问的是哪个目录下的文件?大神,代码都发给你,麻烦您看看,感激不尽
    activity
    import java.io.File;
    import java.text.DateFormat;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;import com.jiahui.sdcardfileexplorer.R;import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.TextView;
    import android.widget.Toast;public class SDCardFileExplorerActivity extends Activity { private TextView tvpath;
    private ListView lvFiles;
    private Button btnParent; // 记录当前的父文件夹
    File currentParent; // 记录当前路径下的所有文件夹的文件数组
    File[] currentFiles; public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); lvFiles = (ListView) this.findViewById(R.id.files); tvpath = (TextView) this.findViewById(R.id.tvpath);
    btnParent = (Button) this.findViewById(R.id.btnParent); // 获取系统的SDCard的目录
    File root = new File("/mnt/sdcard/");
    // 如果SD卡存在的话
    if (root.exists()) { currentParent = root;
    currentFiles = root.listFiles();
    // 使用当前目录下的全部文件、文件夹来填充ListView
    inflateListView(currentFiles); } lvFiles.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view,
    int position, long id) {
    // 如果用户单击了文件,直接返回,不做任何处理
    if (currentFiles[position].isFile()) {
    // 也可自定义扩展打开这个文件等
    return;
    }
    // 获取用户点击的文件夹 下的所有文件
    File[] tem = currentFiles[position].listFiles();
    if (tem == null || tem.length == 0) { Toast.makeText(SDCardFileExplorerActivity.this,
    "当前路径不可访问或者该路径下没有文件", Toast.LENGTH_LONG).show();
    } else {
    // 获取用户单击的列表项对应的文件夹,设为当前的父文件夹
    currentParent = currentFiles[position];
    // 保存当前的父文件夹内的全部文件和文件夹
    currentFiles = tem;
    // 再次更新ListView
    inflateListView(currentFiles);
    } }
    }); // 获取上一级目录
    btnParent.setOnClickListener(new View.OnClickListener() { @Override
    public void onClick(View v) { try { if (!currentParent.getCanonicalPath().equals("/mnt/sdcard")) { // 获取上一级目录
    currentParent = currentParent.getParentFile();
    // 列出当前目录下的所有文件
    currentFiles = currentParent.listFiles();
    // 再次更新ListView
    inflateListView(currentFiles);
    }
    } catch (Exception e) {
    // TODO: handle exception
    } }
    }); } /**
     * 根据文件夹填充ListView
     * 
     * @param files
     */
    private void inflateListView(File[] files) { List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>(); for (int i = 0; i < files.length; i++) { Map<String, Object> listItem = new HashMap<String, Object>(); if (files[i].isDirectory()) {
    // 如果是文件夹就显示的图片为文件夹的图片
    listItem.put("icon", R.drawable.folder);
    } else {
    listItem.put("icon", R.drawable.file);
    }
    // 添加一个文件名称
    listItem.put("filename", files[i].getName()); File myFile = new File(files[i].getName()); // 获取文件的最后修改日期
    long modTime = myFile.lastModified();
    SimpleDateFormat dateFormat = new SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss");
    System.out.println(dateFormat.format(new Date(modTime))); // 添加一个最后修改日期
    listItem.put("modify",
    "修改日期:" + dateFormat.format(new Date(modTime)));
     long FileSizes = myFile.length();
                DecimalFormat df = new DecimalFormat("#.00");
                System.out.println(df.format(FileSizes/1024));
                
                listItem.put("size",
                 "文件大小:" + (df.format(FileSizes/1024)) + "KB");
    listItems.add(listItem); } // 定义一个SimpleAdapter
    SimpleAdapter adapter = new SimpleAdapter(
    SDCardFileExplorerActivity.this, listItems, R.layout.list_item,
    new String[] { "filename", "icon", "modify" ,"size"}, new int[] {
    R.id.file_name, R.id.icon, R.id.file_modify,R.id.file_size }); // 填充数据集
    lvFiles.setAdapter(adapter); try {
    tvpath.setText("当前路径为:" + currentParent.getCanonicalPath());
    } catch (Exception e) {
    e.printStackTrace();
    } }
    }main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >    <TextView
            android:id="@+id/tvpath"
            android:layout_gravity="center_horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#ff0000"
            android:textSize="20dip"
          />    <ListView android:id="@+id/files"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
         
            >
            
            
        </ListView>
        
            
            <Button android:id="@+id/btnParent"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/back_48"
                android:paddingTop="20dip"
                android:layout_gravity="center"/>
    </LinearLayout>list_item.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        
        android:padding="5dip" >    <CheckBox
           android:id="@+id/CheckBox"
           android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:focusable="false"
            />
        
        <ImageView android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            />    <LinearLayout android:orientation="vertical"
            android:layout_width="wrap_content"
            
            android:layout_height="wrap_content"
            >
            <TextView android:id="@+id/file_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16dp"
            android:gravity="center_vertical"
         
           
            />
            
             <TextView android:id="@+id/file_modify"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="10dp"
            android:gravity="center_vertical"
         
           
            />
            
            <TextView android:id="@+id/file_size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="10dp"
             
            />
        </LinearLayout>
        
    </LinearLayout>
    麻烦您看看怎么就是无法输出文件日期和大小
      

  5.   

    虽然没有全部跑你的代码,但是至少file.lastModified();和file.length();是可以获取到修改时间和文件大小的
      

  6.   

    File root = new File("/mnt/sdcard/");
    用File root = Environment.getExternalStorageDirectory();
    有些系统这个sdcard挂载路径是不一样的。
    另外你自己调试下,看看currentFiles = root.listFiles();里currentFiles里的内容,能看到每个文件的属性的
      

  7.   

    大神,别人说是listItem.put("filename", files[i].getName());这个getname只获得了文件名,没获得文件属性,那应该把getname换成什么啊,刚接触,好多函数不大清楚
      

  8.   

    大神,别人说是listItem.put("filename", files[i].getName());这个getname只获得了文件名,没获得文件属性,那应该把getname换成什么啊,刚接触,好多函数不大清楚
      

  9.   


     File myFile = files[i];这样就行了
      

  10.   

    大神。fileroot改了,public void onClick(View v) { try { if (!currentParent.getCanonicalPath().equals("/mnt/sdcard/")) {
    这个该怎么改
      

  11.   


     File myFile = files[i];这样就行了明白了,大神,
      

  12.   


    currentParent.getAbsolutePath()大哥还有最后一个问题long FileSizes = myFile.length();
                DecimalFormat df = new DecimalFormat("#.00");
                System.out.println(df.format((double)FileSizes));
                if (FileSizes<1024){
                listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes)) + "B");
                }if (FileSizes<1048576){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1024)) + "KB");
                }if (FileSizes<1073741824){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1048576)) + "M");
                }else { 
                listItem.put("size",
                 "文件大小:" + (df.format(FileSizes/1073741824)) + "G");}
    这个怎么跳过文件夹啊,不显示文件夹大小
      

  13.   


    currentParent.getAbsolutePath()大哥还有最后一个问题long FileSizes = myFile.length();
                DecimalFormat df = new DecimalFormat("#.00");
                System.out.println(df.format((double)FileSizes));
                if (FileSizes<1024){
                listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes)) + "B");
                }if (FileSizes<1048576){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1024)) + "KB");
                }if (FileSizes<1073741824){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1048576)) + "M");
                }else { 
                listItem.put("size",
                 "文件大小:" + (df.format(FileSizes/1073741824)) + "G");}
    这个怎么跳过文件夹啊,不显示文件夹大小不显示这个“文件大小”四个字?
    long FileSizes = myFile.length();
    DecimalFormat df = new DecimalFormat("#.00");
    System.out.println(df.format((double)FileSizes));
     if (FileSizes<1024){
             listItem.put("size",
                             (df.format((double)FileSizes)) + "B");
     } else if (FileSizes<1048576){
              listItem.put("size",
                                (df.format((double)FileSizes/1024)) + "KB");
     } else if (FileSizes<1073741824){
              listItem.put("size",
                                 (df.format((double)FileSizes/1048576)) + "M");
     } else { 
              listItem.put("size",
                            (df.format(FileSizes/1073741824)) + "G");
    }
      

  14.   


    currentParent.getAbsolutePath()大哥还有最后一个问题long FileSizes = myFile.length();
                DecimalFormat df = new DecimalFormat("#.00");
                System.out.println(df.format((double)FileSizes));
                if (FileSizes<1024){
                listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes)) + "B");
                }if (FileSizes<1048576){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1024)) + "KB");
                }if (FileSizes<1073741824){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1048576)) + "M");
                }else { 
                listItem.put("size",
                 "文件大小:" + (df.format(FileSizes/1073741824)) + "G");}
    这个怎么跳过文件夹啊,不显示文件夹大小不显示这个“文件大小”四个字?
    long FileSizes = myFile.length();
    DecimalFormat df = new DecimalFormat("#.00");
    System.out.println(df.format((double)FileSizes));
     if (FileSizes<1024){
             listItem.put("size",
                             (df.format((double)FileSizes)) + "B");
     } else if (FileSizes<1048576){
              listItem.put("size",
                                (df.format((double)FileSizes/1024)) + "KB");
     } else if (FileSizes<1073741824){
              listItem.put("size",
                                 (df.format((double)FileSizes/1048576)) + "M");
     } else { 
              listItem.put("size",
                            (df.format(FileSizes/1073741824)) + "G");
    }额不是,是不输出文件夹大小,这个输出的文件夹大小都是0.00m,如何只输出文件的大小而不输出文件夹的大小
      

  15.   


    currentParent.getAbsolutePath()大哥还有最后一个问题long FileSizes = myFile.length();
                DecimalFormat df = new DecimalFormat("#.00");
                System.out.println(df.format((double)FileSizes));
                if (FileSizes<1024){
                listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes)) + "B");
                }if (FileSizes<1048576){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1024)) + "KB");
                }if (FileSizes<1073741824){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1048576)) + "M");
                }else { 
                listItem.put("size",
                 "文件大小:" + (df.format(FileSizes/1073741824)) + "G");}
    这个怎么跳过文件夹啊,不显示文件夹大小不显示这个“文件大小”四个字?
    long FileSizes = myFile.length();
    DecimalFormat df = new DecimalFormat("#.00");
    System.out.println(df.format((double)FileSizes));
     if (FileSizes<1024){
             listItem.put("size",
                             (df.format((double)FileSizes)) + "B");
     } else if (FileSizes<1048576){
              listItem.put("size",
                                (df.format((double)FileSizes/1024)) + "KB");
     } else if (FileSizes<1073741824){
              listItem.put("size",
                                 (df.format((double)FileSizes/1048576)) + "M");
     } else { 
              listItem.put("size",
                            (df.format(FileSizes/1073741824)) + "G");
    }就是区别开文件夹和文件,只显示文件的大小
      

  16.   


    currentParent.getAbsolutePath()大哥还有最后一个问题long FileSizes = myFile.length();
                DecimalFormat df = new DecimalFormat("#.00");
                System.out.println(df.format((double)FileSizes));
                if (FileSizes<1024){
                listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes)) + "B");
                }if (FileSizes<1048576){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1024)) + "KB");
                }if (FileSizes<1073741824){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1048576)) + "M");
                }else { 
                listItem.put("size",
                 "文件大小:" + (df.format(FileSizes/1073741824)) + "G");}
    这个怎么跳过文件夹啊,不显示文件夹大小不显示这个“文件大小”四个字?
    long FileSizes = myFile.length();
    DecimalFormat df = new DecimalFormat("#.00");
    System.out.println(df.format((double)FileSizes));
     if (FileSizes<1024){
             listItem.put("size",
                             (df.format((double)FileSizes)) + "B");
     } else if (FileSizes<1048576){
              listItem.put("size",
                                (df.format((double)FileSizes/1024)) + "KB");
     } else if (FileSizes<1073741824){
              listItem.put("size",
                                 (df.format((double)FileSizes/1048576)) + "M");
     } else { 
              listItem.put("size",
                            (df.format(FileSizes/1073741824)) + "G");
    }额不是,是不输出文件夹大小,这个输出的文件夹大小都是0.00m,如何只输出文件的大小而不输出文件夹的大小加个判断
    boolean isFile = myFile.isFile();
    true就执行上面那段代码
      

  17.   


    currentParent.getAbsolutePath()大哥还有最后一个问题long FileSizes = myFile.length();
                DecimalFormat df = new DecimalFormat("#.00");
                System.out.println(df.format((double)FileSizes));
                if (FileSizes<1024){
                listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes)) + "B");
                }if (FileSizes<1048576){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1024)) + "KB");
                }if (FileSizes<1073741824){
                 listItem.put("size",
                 "文件大小:" + (df.format((double)FileSizes/1048576)) + "M");
                }else { 
                listItem.put("size",
                 "文件大小:" + (df.format(FileSizes/1073741824)) + "G");}
    这个怎么跳过文件夹啊,不显示文件夹大小不显示这个“文件大小”四个字?
    long FileSizes = myFile.length();
    DecimalFormat df = new DecimalFormat("#.00");
    System.out.println(df.format((double)FileSizes));
     if (FileSizes<1024){
             listItem.put("size",
                             (df.format((double)FileSizes)) + "B");
     } else if (FileSizes<1048576){
              listItem.put("size",
                                (df.format((double)FileSizes/1024)) + "KB");
     } else if (FileSizes<1073741824){
              listItem.put("size",
                                 (df.format((double)FileSizes/1048576)) + "M");
     } else { 
              listItem.put("size",
                            (df.format(FileSizes/1073741824)) + "G");
    }额不是,是不输出文件夹大小,这个输出的文件夹大小都是0.00m,如何只输出文件的大小而不输出文件夹的大小加个判断
    boolean isFile = myFile.isFile();
    true就执行上面那段代码额,大哥,能明确指导下么,没用过boolean,不大会,真是不好意思啊,多谢了
      

  18.   

    boolean isFile = myFile.isFile();
    if(isFile){
        long FileSizes = myFile.length();
        DecimalFormat df = new DecimalFormat("#.00");
        System.out.println(df.format((double)FileSizes));
        if (FileSizes<1024){
              listItem.put("size",
                     "文件大小:" + (df.format((double)FileSizes)) + "B");
         } else if (FileSizes<1048576){
              listItem.put("size",
                     "文件大小:" + (df.format((double)FileSizes/1024)) + "KB");
        } else if (FileSizes<1073741824){
            listItem.put("size",
                      "文件大小:" + (df.format((double)FileSizes/1048576)) + "M");
         }else { 
              listItem.put("size",
                      "文件大小:" + (df.format(FileSizes/1073741824)) + "G");
       }
    }