2013-08-04 13 views
1

,我有以下方法的文件):获取lastModifiedDate()和文件大小(单位ArrayList中

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     final RelativeLayout mFrame3 = (RelativeLayout) inflater.inflate(R.layout.ptrip, container, false); 

     File folder = new File(Environment.getExternalStorageDirectory() + "/tc/"); 
     ListView lv; 
     ArrayList<String> FilesInFolder = GetFiles(folder.getAbsolutePath()); 
     Toast.makeText(getActivity(), FilesInFolder.get(0).toString(), 2000).show(); //display filename (0) 
//////////////////////// 
/////////////////////// 
//would this work: 
//for (int i = 0; i <= FilesInFolder.length(); i++) { 
//long lastTime = FilesInFolder[0].lastModified(); 
//String dateString = DateFormat.format("MM/dd/yyyy", new Date(lastTime)).toString(); //last modified date? 
//String sizeString = getReadableSize(FolderInFiles[i].length()); //file size? 
//} 
////////////////////// 
////////////////////// 
     lv = (ListView) mFrame3.findViewById(R.id.lvFiles); 

     lv.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, FilesInFolder)); 

     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       // Clicking on items 
      //Toast.makeText(getActivity(), "Item " + (position + 1) + ": ID" + v, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     return mFrame3; 
    } 

我的GetFolder功能是:

public ArrayList<String> GetFiles(String DirectoryPath) { 
    ArrayList<String> MyFiles = new ArrayList<String>(); 
    File f = new File(DirectoryPath); 


    //f.mkdirs(); 
    File[] files = f.listFiles(); 
    if (files.length == 0) 
     return null; 
    else { 
     for (int i=0; i<files.length; i++) { 
      if (files[i].getName().endsWith(".tol")) { 
       long lastTime = files[i].lastModified(); 
       String dateString = DateFormat.format("MM/dd/yyyy", new Date(lastTime)).toString(); 
       String sizeString = getReadableSize(files[i].length()); 
       //String fileName = files[i].getName().substring(0, files[i].getName().lastIndexOf(".")); 
       MyFiles.add(files[i].getName()); 
       //MyFiles.add("Trip Name: " + fileName + "\nTrip Taken On: " + dateString + "\n" + sizeString); 
      } 
     } 
    } 

    return MyFiles; 
} 

如何获得内部的fileSizelastModifiedDateonCreateMethod?我注释掉GetFolder方法中的fileSizelastModifiedDate,因为我试图只获取文件名,所以我可以读取onCreate方法中的文件,以在MultiLine EditText中显示它的ASCII内容。

//display filename (0) 
//////////////////////// 
/////////////////////// 
//would this work: 
//for (int i = 0; i <= FilesInFolder.length(); i++) { 
//long lastTime = FilesInFolder[0].lastModified(); 
//String dateString = DateFormat.format("MM/dd/yyyy", new Date(lastTime)).toString(); //last modified date? 
//String sizeString = getReadableSize(FolderInFiles[i].length()); //file size? 
//} 
////////////////////// 
////////////////////// 
+1

不要使用'String'来表示一个文件,使用'List '并且只有当你需要显示文件名才能获得每个文件的名字。 – zapl

+0

现在该函数正在以扩展名返回文件名。 – Si8

回答

1

你有三个选择

  • 如果你不想改变GetFiles

    会如上面添加这项工作onCreateonCreate,从文件中创建一个File实例名称,并在那里调用方法。这是唯一的选择,如果你无论如何不能改变GetFiles

  • 创建一个类MyFile其中有三个字段(namefileSizelastModifiedDate),并从GetFiles返回List<MyFile>。一般来说,如果您只想返回实例的有限子集或只读视图(例如没有设置器),则此选项很有用。

  • 返回一个List<File>GetFiles

最后一个选项是简单而地道。

+0

我想为文件名,文件上次修改,文件大小调用三个单独的方法,看看它是如何工作的。谢谢。 – Si8

+0

我为三个单独的变量调用了三种单独的方法。有效。稍后我会把它转换成一个:) – Si8