teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

真面目に回答します。

2015/11/04 12:36

投稿

anonymouskawa
anonymouskawa

スコア856

answer CHANGED
@@ -8,4 +8,120 @@
8
8
  →サブディレクトリは無視していいんですよね?
9
9
  サイズ順、更新日順に
10
10
  →第一ソートがサイズで、第二ソートが更新日ということですか?
11
- 全部同一の場合はどちらが優先して表示されても良いのですか?
11
+ 全部同一の場合はどちらが優先して表示されても良いのですか?
12
+
13
+ -----追記
14
+ **何を期待して質問したのかわからないのであまり考えていません。**
15
+ **これをそのままコピペして何かの課題なり宿題なりに提出して動かないと言われても責任は負いません。**
16
+ 質問事項にイマイチ的を得ない回答を頂いたので、適当に補完しました。
17
+
18
+ ```Java
19
+ import java.io.File;
20
+ import java.text.SimpleDateFormat;
21
+ import java.util.ArrayList;
22
+ import java.util.Collections;
23
+ import java.util.Comparator;
24
+ import java.util.Date;
25
+
26
+ public class Test {
27
+
28
+ public static void main(String[] args) {
29
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
30
+ String path = "C:\\hoge";
31
+ File dir = new File(path);
32
+
33
+ if (!dir.exists()) {
34
+ System.out.println("存在しません");
35
+ return;
36
+ }
37
+ File[] files = dir.listFiles();
38
+
39
+ ArrayList<FileData> list = new ArrayList<FileData>();
40
+
41
+ for (int i = 0; i < files.length; i++) {
42
+ File file = files[i];
43
+ String fileName = file.getName();
44
+ long size = file.length();
45
+ FileData fd = new FileData();
46
+ fd.setId(i);
47
+ fd.setFileName(fileName);
48
+ fd.setSize(size);
49
+ fd.setLastUpdate(file.lastModified());
50
+ list.add(fd);
51
+ }
52
+
53
+ Collections.sort(list, new FileCompSize());
54
+
55
+ for (FileData fd : list) {
56
+ System.out.println(fd.getId() + " " + fd.getFileName() + " size:" + fd.getSize() );
57
+ }
58
+
59
+ Collections.sort(list, new FileCompLastUpdate());
60
+
61
+ for (FileData fd : list) {
62
+ System.out.println(fd.getId() + " " + fd.getFileName() + " lastUpdate:" + sdf.format(new Date(fd.getLastUpdate())) );
63
+ }
64
+ }
65
+
66
+
67
+ static final class FileCompSize implements Comparator<FileData> {
68
+ @Override
69
+ public int compare(FileData f1, FileData f2) {
70
+ int i = Long.compare(f1.getSize(), f2.getSize());
71
+ if (i == 0 ) {
72
+ i = Long.compare(f1.getId(), f2.getId());
73
+ }
74
+ return i;
75
+ }
76
+
77
+ }
78
+
79
+ static final class FileCompLastUpdate implements Comparator<FileData> {
80
+ @Override
81
+ public int compare(FileData f1, FileData f2) {
82
+ int i = Long.compare(f1.getLastUpdate(), f2.getLastUpdate());
83
+ if (i == 0 ) {
84
+ i = Long.compare(f1.getId(), f2.getId());
85
+ }
86
+ return i;
87
+ }
88
+
89
+ }
90
+
91
+ static final class FileData {
92
+
93
+ private int id;
94
+ private String fileName;
95
+ private long size;
96
+ private long lastUpdate;
97
+
98
+ public int getId() {
99
+ return id;
100
+ }
101
+ public void setId(int id) {
102
+ this.id = id;
103
+ }
104
+ public String getFileName() {
105
+ return fileName;
106
+ }
107
+ public void setFileName(String fileName) {
108
+ this.fileName = fileName;
109
+ }
110
+ public long getSize() {
111
+ return size;
112
+ }
113
+ public void setSize(long size) {
114
+ this.size = size;
115
+ }
116
+ public long getLastUpdate() {
117
+ return lastUpdate;
118
+ }
119
+ public void setLastUpdate(long lastUpdate) {
120
+ this.lastUpdate = lastUpdate;
121
+ }
122
+ }
123
+
124
+ }
125
+
126
+ ```
127
+