如何使用Java代码从具有当前日期和时间的文件夹中获取文件名
我是java自动化新手,我有一个场景,我需要导航到一个特定的文件夹,该文件夹有一个文件列表,我需要按日期筛选并获取最近生成的文件名,即,如果当前时间是5:30pm,我需要查找在5:28pm到当前时间(5:30pm)之间创建的文件名 这必须使用Java代码、文件夹中的文件名来实现 DOF_US_DELL_1.0_20160930_0516.CSV如何使用Java代码从具有当前日期和时间的文件夹中获取文件名,java,Java,我是java自动化新手,我有一个场景,我需要导航到一个特定的文件夹,该文件夹有一个文件列表,我需要按日期筛选并获取最近生成的文件名,即,如果当前时间是5:30pm,我需要查找在5:28pm到当前时间(5:30pm)之间创建的文件名 这必须使用Java代码、文件夹中的文件名来实现 DOF_US_DELL_1.0_20160930_0516.CSV DOF_US_DELL_1.0_20160930_0756.CSV DOF_US_DELL_1.0_20161003_0346.CSV DOF_US_D
DOF_US_DELL_1.0_20160930_0756.CSV
DOF_US_DELL_1.0_20161003_0346.CSV
DOF_US_DELL_1.0_20161003_0536.CSV
DOF_US_DELL_1.0_20161004_0747.CSV
DOF_US_DELL_1.0_20161005_0527.CSV 下面是一段代码,帮助我获取目录中的文件列表
File dir = new File("C:\\FolderName");
FilenameFilter filter = new FilenameFilter() {
public boolean accept
(File dir, String name) {
return name.startsWith("DOF");
}
};
String[] children = dir.list(filter);
if (children == null) {
System.out.println("Either dir does not exist or is not a directory");
}
else
{
System.out.println("# of the files in the folder is: "+children.length);
if(children.length>0)
{
for (int i=0; i<children.length; i++)
{
String filename = children[i];
System.out.println(filename);
}
}
else
{
System.err.println("# of the files in the folder is: "+children.length);
fail("# of the files in the folder is: "+children.length);
}
}
File dir=新文件(“C:\\FolderName”);
FilenameFilter筛选器=新建FilenameFilter(){
公共布尔接受
(文件目录,字符串名称){
返回名称。开始使用(“DOF”);
}
};
String[]children=dir.list(过滤器);
if(children==null){
System.out.println(“目录不存在或不是目录”);
}
其他的
{
System.out.println(“#文件夹中的文件为:“+childrence.length”);
如果(子项长度>0)
{
对于(inti=0;i试试这个。这里我根据文件的上次更新时间对文件进行排序
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.startsWith("cred");
}
};
List<FileOrder> list = new ArrayList<FileOrder>();
File dir = new File("/tmp/");
for (File file : dir.listFiles(filter)) {
list.add(new FileOrder(file.getName(), file.lastModified()));
}
Collections.sort(list);
System.out.println(list);
System.out.println("Last updated file : " + (list != null ? list.get(0) : null));
FilenameFilter=newfilenamefilter(){
公共布尔接受(文件目录,字符串名称){
返回名称。开始使用(“cred”);
}
};
列表=新的ArrayList();
File dir=新文件(“/tmp/”);
for(文件:dir.listFiles(过滤器)){
添加(新文件顺序(file.getName(),file.lastModified());
}
集合。排序(列表);
系统输出打印项次(列表);
System.out.println(“上次更新的文件:”+(list!=null?list.get(0):null));
以上代码是主函数的一部分
下面的代码是单独的类
public class FileOrder implements Comparable<FileOrder> {
private String fileName;
private Long updationTIme = 0l;
@Override
public String toString() {
return "FileOrder [fileName=" + fileName + ", updationTIme=" + updationTIme + "]";
}
public FileOrder(String fileName, Long updationDate) {
super();
this.fileName = fileName;
this.updationTIme = updationDate;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public Long getUpdationDate() {
return updationTIme;
}
public void setUpdationDate(Long updationDate) {
this.updationTIme = updationDate;
}
@Override
public int compareTo(FileOrder o) {
return o.getUpdationDate().compareTo(this.getUpdationDate());
}
}
公共类FileOrder实现了可比较的{
私有字符串文件名;
私有长更新时间=0l;
@凌驾
公共字符串toString(){
返回“FileOrder[fileName=“+fileName+”,updatetime=“+updatetime+”]”;
}
公共文件顺序(字符串文件名,长更新日期){
超级();
this.fileName=文件名;
this.updatetime=updatedate;
}
公共字符串getFileName(){
返回文件名;
}
public void setFileName(字符串文件名){
this.fileName=文件名;
}
公共长getUpdate(){
返回更新时间;
}
公共无效设置日期(长更新日期){
this.updatetime=updatedate;
}
@凌驾
公共整数比较(文件顺序o){
返回o.getUpdate().compareTo(this.getUpdateDate());
}
}
祝你好运。也许如果你向我们展示你在问题中尝试编写的代码,我们可能会给你更具体的帮助。嗨,吉尔伯特,谢谢你的回复……我已经编辑了我的原始帖子,请检查你是否能帮我……我收到错误“List List=new ArrayList();”在这一行中。错误:FileOrder无法解析为类型创建FileOrder一个单独的类并重试。我相信您已经添加了未经思考的代码。我将添加说明