我在显示当前修改日期的文件时遇到了一些问题.
public class MyAdapter extends ArrayAdapter<String> {
String dir = "/FileDirectory/";
File file = new File(Environment.getExternalStorageDirectory() + dir);
private final Activity context;
Date lastModified = new Date(file.lastModified());
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
String formattedDateString = formatter.format(lastModified);
private String dateFormat = "dd/MM/yyyy HH:mm:ss";
static class ViewHolder {
public TextView text;
}
public MyAdapter(Activity context, String[] date) {
super(context, R.layout.row, date);
this.context = context;
formatter = new SimpleDateFormat(dateFormat);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.row, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView) rowView.findViewById(R.id.FilePath);
rowView.setTag(viewHolder);
}
ViewHolder holder = (ViewHolder) rowView.getTag();
String s = formattedDateString;
holder.text.setText(s);
return rowView;
}
}
Run Code Online (Sandbox Code Playgroud)
截至目前,它只显示所有文件上目录的最后修改日期.任何帮助将不胜感激!
在您的问题中,您指向的是目录,而不是文件。
File file = new File(Environment.getExternalStorageDirectory() + dir);
private final Activity context;
Date lastModified = new Date(file.lastModified());
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
String formattedDateString = formatter.format(lastModified);
Run Code Online (Sandbox Code Playgroud)
这个想法是获取一个目录并迭代搜索所有文件的最后修改日期。以下问题可能会有所帮助: 如何使用 Java 从目录中仅获取 10 个最后修改的文件?
编辑 1:
我的棘手解决方案:
File images = new File("YourDirectoryPath");
long[] fileModifieDate = new long[images.listFiles().length];
int i=0;
File[] imagelist = images.listFiles(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
File file = new File(dir, name);
fileModifieDate[i++] = file.lastModified();
return true;
}
});
// Here, max is the last modified date for this directory
// Here, Long array **fileModifieDate** will give modified time of all files, which you can also access from Files array
// if you want the last modified file in the directory you can do this:
File[] maxModifiedDate = images.listFiles(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
File file = new File(dir, name);
return file.lastModified() == max;
}
});
// Now **maxModifiedDate** File array will have only one File, which will have max modified date.
Run Code Online (Sandbox Code Playgroud)
编辑2:
对于您的情况,这会有所帮助:
public class MyAdapter extends ArrayAdapter<String> {
String dir = "/FileDirectory/";
File myFolder= new File(Environment.getExternalStorageDirectory() + dir);
if(myFolder.exists()){
File[] filelist = myFolder.listFiles(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
return true;
}
});
}
Run Code Online (Sandbox Code Playgroud)
// 现在你有一个文件的文件列表数组。如果你想要 lastModified 数据,你可以像以前一样从每个单独的文件中获取:
private final Activity context;
Date lastModified = new Date(file.lastModified());
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
String formattedDateString = formatter.format(lastModified);
private String dateFormat = "dd/MM/yyyy HH:mm:ss";
Run Code Online (Sandbox Code Playgroud)