我已经看过其他帖子,但似乎无法在我的帖子中说得好。有人可以帮我这个。我能够查看文件并打开它们,但需要它们列出从最近的创建到最旧的。以下是我的代码。
private List<String> fileList = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String root = Environment.getExternalStoragePublicDirectory("/MyAppFolder").
getAbsolutePath();
// ListDir(root);
pdf = new File(root);
ListDir(pdf);
}
void ListDir(File f) {
File[] files = f.listFiles();
fileList.clear();
for (File file : files) {
fileList.add(file.getName());
}
ArrayAdapter<String> directoryList = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, fileList);
setListAdapter(directoryList);
}
public void onListItemClick(ListView parent, View v, int position, long id) {
//selection.setText(fileList.indexOf(simple_list_item_1));
OpenPdf(fileList.get(position).toString());
}
public void OpenPdf(String path)
{
File file = new File(path);
if (file.exists()) {
Uri p = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(p, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
startActivity(intent);
}
catch (ActivityNotFoundException e){
}
}
}
}
答案 0 :(得分:0)
您可以签出以下question,这显示了如何为最后一个mod时间戳执行此操作。它应该很容易适应你的情况。
这里最有趣的部分是比较器。
答案 1 :(得分:0)
Comparator<File> fileDateCmp = new Comparator<File>() {
public int compare(File f1, File f2) {
return Long.compare(f1.lastModified(), f2.lastModified());
}
};
File[] yourArrayOfFiles
Arrays.sort(yourArrayOfFiles, fileDateCmp);
例如在我的学校电脑上:
Comparator<File> fileDateCmp = new Comparator<File>() {
public int compare(File f1, File f2) {
return Long.compare(f1.lastModified(), f2.lastModified());
}
};
File[] yourArrayOfFiles = File.listRoots();
System.out.println(Arrays.toString(yourArrayOfFiles));
Arrays.sort(yourArrayOfFiles, fileDateCmp);
System.out.println(Arrays.toString(yourArrayOfFiles));
for(File file : yourArrayOfFiles) {
System.out.print(file + ": ");
System.out.println(file.lastModified());
}
输出:
[C:\, D:\, K:\, M:\, P:\, S:\, U:\, V:\]
[D:\, V:\, M:\, K:\, P:\, U:\, S:\, C:\]
D:\: 0
V:\: 1370008587158
M:\: 1386966108069
K:\: 1395062748515
P:\: 1396364590821
U:\: 1398716910066
S:\: 1400518034257
C:\: 1400684450266