12

現在変更されているファイルの日付を表示するのに問題があります。

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;
    }
}

現在のところ、すべてのファイルのディレクトリの最終更新日を表示するだけです。どんな助けでも大歓迎です!

4

4 に答える 4

8

あなたの質問では、ファイルではなくディレクトリを指しています。

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);

アイデアは、ディレクトリを取得し、すべてのファイルの最終更新日を繰り返し検索することです。次の質問が役立つ場合があります: 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.

編集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;
        }

    }); 
}   

// これで、Files のfilelist配列ができました。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";
于 2013-09-14T17:01:19.880 に答える
3

最終更新日を取得する完全なコード

    File file = new File("c:\\test\\myfile.txt");
    SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
    System.out.println("Modified Date :- " + sdf.format(file.lastModified()));
于 2014-03-15T07:56:00.313 に答える
0

File file = new File(Environment.getExternalStorageDirectory() + dir);

ファイルではなくディレクトリを指します。

ディレクトリ内の各ファイルの変更日が個別に必要な場合は、単にwalkfiletreeを使用してください。

これを確認してください。

于 2013-09-14T16:47:39.023 に答える
0

Anonymous Mohitの回答を試してみましたが、フォルダー内のアイテムのファイルサイズのみをチェックします。しかし、多くのサブフォルダーがある場合はどうなるでしょうか? これが私がやった方法です。

public static long lastModifiedDate;
public static long getLastModified(String path) {
    File directory = new File(path);
    File[] files = directory.listFiles();
    if(GlobalValues.DEBUG) Log.i(TAG, "Get last modified date: " + path);
    if (files.length == 0) return directory.lastModified();
    else {
        for(File filesInFolder: files) {
            if(filesInFolder.isDirectory()) {
                getLastModified(filesInFolder.getAbsolutePath());
            } else {
                if(lastModifiedDate == 0) {
                    lastModifiedDate = filesInFolder.lastModified();
                } else{
                    if(filesInFolder.lastModified() >= lastModifiedDate){
                        lastModifiedDate = filesInFolder.lastModified();
                    }
                }
            }
        }
        return lastModifiedDate;
    }
}
于 2015-07-03T06:49:02.003 に答える