Java 查找目录中所有文件的创建、访问或修改日期
我需要在一个目录(在子目录中)中查找文件的访问、修改和创建日期。我听说您可以使用基本文件属性来获取它们。这就是我迄今为止所尝试的:Java 查找目录中所有文件的创建、访问或修改日期,java,Java,我需要在一个目录(在子目录中)中查找文件的访问、修改和创建日期。我听说您可以使用基本文件属性来获取它们。这就是我迄今为止所尝试的: Path file_dir = Paths.get("F:/"); BasicFileAttributes attrs = Files.readAttributes(file_dir, BasicFileAttributes.class); System.out.println("Last accessed at:" + attrs.lastAcce
Path file_dir = Paths.get("F:/");
BasicFileAttributes attrs = Files.readAttributes(file_dir, BasicFileAttributes.class);
System.out.println("Last accessed at:" + attrs.lastAccessTime());
System.out.println("Last modifired at:" + attrs.lastModifiedTime());
System.out.println("Created:" +attrs.creationTime());
我需要在所有文件中找到它们并对它们进行筛选,以便找出哪一个是1天前或1小时前创建的。给你:
public static void main(String[] args) throws Exception{
//Folder to search
File file = new File("C:\\Caixa");
//Get all files from the folder (including subfolders)
ArrayList<File> allFiles = new ArrayList<>();
listFiles(file, allFiles);
//Filter to use (1 day back from now)
Calendar filter = Calendar.getInstance();
filter.add(Calendar.DAY_OF_MONTH, -1);
//Or 1 hour ago
//filter.add(Calendar.HOUR_OF_DAY, -1);
//List to keep the files found using the filter
List<File> filesFound = new ArrayList<>();
//Search code
for (File fileSearched : allFiles) {
BasicFileAttributes attrs = Files.readAttributes(Paths.get(fileSearched.getAbsolutePath()), BasicFileAttributes.class);
Calendar creationTime = Calendar.getInstance();
creationTime.setTimeInMillis(attrs.creationTime().toMillis());
if(creationTime.after(filter)){
filesFound.add(fileSearched);
}
}
//Listing files searched using the filter
for (File fileFound : filesFound) {
System.out.println("File found: "+fileFound);
}
}
public static void listFiles(File directory, ArrayList<File> files) {
File[] fList = directory.listFiles();
for (File file : fList) {
if (file.isFile()) {
files.add(file);
} else if (file.isDirectory()) {
listFiles(file, files);
}
}
}
查找以下内容:仅获取.txt文件如果您注意到我的代码,它只按创建时间进行搜索。请查看我的更新,了解按创建和修改时间搜索的答案。确定。如果只想获取特定文件,则需要在If子句中添加一条语句:
If((creationTime.after(filter)| | modifiedTime.after(filter))&&filesearch.getName().toLowerCase().endsWith(.txt)){
如果答案对您有帮助,请确保将其检查为已接受。
//Search code
for (File fileSearched : allFiles) {
BasicFileAttributes attrs = Files.readAttributes(Paths.get(fileSearched.getAbsolutePath()), BasicFileAttributes.class);
Calendar creationTime = Calendar.getInstance();
creationTime.setTimeInMillis(attrs.creationTime().toMillis());
Calendar modifiedTime = Calendar.getInstance();
modifiedTime.setTimeInMillis(attrs.lastModifiedTime().toMillis());
if(creationTime.after(filter) || modifiedTime.after(filter)){
filesFound.add(fileSearched);
}
}