0

私は5つのファイルを持っています。

1.ICAREP_ANI_SVCPROF_20120614_001.DAT
2.ICAREP_ANI_SVCPROF_20120617_001.DAT
3.ICAREP_ANI_SVCPROF_20120619_001.DAT
4.ICAREP_ANI_SVCPROF_20120615_001.DAT
5.ICAREP_ANI_SVCPROF_20120616_001.DAT

そのファイル名から日付(例: "20120614")を取得し、各日付を比較して、Javaプログラミングを使用して最新のものを見つけたいと思います。

誰でもこれについて私を助けることができますか?

編集!以下は私のコードです:

 String[] children = dir.list();
 String test = "";
 for (i=0; i<children.length; i++) {
   test = children[i].compareTo(children[i+1]);
 }
4

6 に答える 6

1
int numbDate = Integer.parseInt((String) str.subSequence(19, 27))

ここで、strはファイル名です。

于 2012-12-28T06:51:32.710 に答える
1

これがあなたが使うことができる簡単な論理です、

String filepath = "ICAREP_ANI_SVCPROF_20120614_001.DAT";
        String [] tempPath = filepath.split("_");
        System.out.println(""+tempPath[3]); //output = 20120614

        SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd");
        try
        {
            Date date1 = ft.parse(tempPath[3]); //covert the string into date
        }
        catch(ParseException ex)
        {
            System.out.println(""+ex);
        }

        //compare the date logic

以下のコードから、split( "_")を使用してファイルの日付を取得できるため、ファイル名の長さは関係ありません。

その後、「yyMMdd」パターンでSimpleDateFormatを使用して文字列を解析できます。

次に、ft.parse(string)を使用してDateオブジェクトを生成します。

于 2012-12-28T06:54:20.057 に答える
0

これがワンライナーです:

Date date = new SimpleDateFormat("yyyyMMdd").parse(filename.replaceAll(".*(\\d{8}).*", "$1"));
于 2012-12-28T07:11:48.577 に答える
0

ファイル名が常に同じように見える場合は、日付を抽出する必要はありません。ファイル名に文字列比較を使用するだけです。

file1.getName().compareTo(file2.getName())

このようにして、最新のものを見つけることができます。

于 2012-12-28T07:02:42.350 に答える
0
enter code here


String[] ar = { "ICAREP_ANI_SVCPROF_20120614_001.DAT", "ICAREP_ANI_SVCPROF_20120617_001.DAT",
        "ICAREP_ANI_SVCPROF_20120619_001.DAT", "ICAREP_ANI_SVCPROF_20120615_001.DAT",
        "ICAREP_ANI_SVCPROF_20120616_001.DAT" };

int latestIndex = 0;
int latest = 0;
String latestFile = ar[0];
for (int i = 0; i < ar.length; i++) {
    String tempString = ar[i].substring(0, ar[i].lastIndexOf('_'));
    latestFile = tempString.substring(tempString.lastIndexOf('_') + 1);
    int current = Integer.parseInt(latestFile);
    if (latest < current) {
    latestIndex = i;
    latest = current;
    }
}

System.out.println("Latest file: " + ar[latestIndex]);
于 2012-12-28T09:43:12.537 に答える
-1

それらが特定のフォルダにある場合は、最初にファイル名を取得し、それに応じて解析して特定の文字列を取得できます。これを試してみてください

`

       public void listFilesForFolder(final File folder) {
            for (final File fileEntry : folder.listFiles()) {
                if (fileEntry.isDirectory()) {
                    listFilesForFolder(fileEntry);
                } else {
                    if(fileEntry.getName().contains("20120614"){
//code to compare the latest date
}

                }
        }
}


これを試してみてください、私はこれがあなたが望んでいたものだと思います...

于 2012-12-28T06:54:04.780 に答える