我想根据修改的月份和年份压缩文件。我能够使用简单的日期格式获得月份和年份。
package codes;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.SimpleDateFormat;
public class UsingLoops
{
private static final String FOLDER_PATH = "C:\\Users\\Desktop\\Zip";
public static void main(String[] args) throws IOException
{
File dir = new File(FOLDER_PATH);
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File directory, String fileName)
{
if (fileName.endsWith(".txt"))
{
return true;
}
return false;
}
});
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
for(File f:files)
{
System.out.println(f.getName());
String month = sdf.format(f.lastModified());
int j = Integer.parseInt(month);
System.out.println(j);
}
}
}
现在我想根据月份和年份列出文件。 例如
201412
201411等。
如何自动将ZIP的名称作为年份和月份。
帮助我......
我知道如何使用java进行压缩,但我需要根据时间和命名自动化,希望你明白我的观点
答案 0 :(得分:1)
您可以使用由SortedMap
键入的java.util.Date
来构建List
个已修改特定月/年的文件,例如......
File[] files = ...;
Map<Date, List<File>> mapFiles = new TreeMap<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
for (File file : files) {
try {
// This might seem weird, but basically, this will trim
// off the date (day) and time, making it possible to
// better match elements which fall within the same month
// and year...
// You could use a Calendar here to extract the Year and Month
// values, it would mean you're not creating so many short lived
// objects, but that's up to you
Date date = sdf.parse(sdf.format(new Date(file.lastModified())));
List<File> group = mapFiles.get(date);
if (group == null) {
group = new ArrayList<>(25);
mapFiles.put(date, group);
}
group.add(file);
} catch (ParseException ex) {
ex.printStackTrace();
}
}
// Now, you can process the groups individually...
for (Date date : mapFiles.keySet()) {
System.out.println(sdf.format(date));
for (File file : mapFiles.get(date)) {
System.out.println(" " + file);
}
}
你没有&#34;有&#34;要使用SortedMap
,您可以使用任何类型的Map
,但这样您就可以按照Date
键对这些群组进行排序了...不知道是否它重要与否......
如果你愿意的话,你可以进一步按年份分组文件,然后在几个月内建立第二组...
Map<Date, Map<Date, List<File>> mapFiles = ...
您可以使用String
作为键,但如果您想控制排序顺序,那么Date
或Integer
会更好