2013-08-04 12 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