{"id":83101,"date":"2020-09-26T15:58:53","date_gmt":"2020-09-26T15:58:53","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=87717"},"modified":"2020-09-26T15:58:53","modified_gmt":"2020-09-26T15:58:53","slug":"find-the-last-modified-file-in-a-directory-with-java","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/2020\/09\/26\/find-the-last-modified-file-in-a-directory-with-java\/","title":{"rendered":"Find the Last Modified File in a Directory with Java"},"content":{"rendered":"<p class=\"syndicated-attribution\"><meta name= \\\"keywords \\\" content= \\\"\u96fb\u5b50\u8a08\u7b97\u6a5f, \u6559\u80b2, IT \u96fb\u8166\u73ed,\u96fb\u8166\u88dc\u7fd2\uff0c \u96fb\u8166\u73ed\uff0c \u5bb6\u6559\uff0c \u79c1\u4eba\u8001\u5e2b\uff0c \u8cc7\u8a0a\u6280\u8853\uff0c \u7a0b\u5e8f\u8a2d\u8a08\uff0c \u96fb\u5b50\u8a08\u7b97\u6a5f\uff0c \u904a\u6232\uff0c \u860b\u679c\uff0c \u96fb\u5f71\uff0c \u8a08\u7b97\u6a5f\uff0c\u7de8\u78bc\uff0c Java\uff0c C\/C++\uff0c JavaScript\uff0c PHP\uff0c HTML\uff0c CSS\uff0c MySQL\uff0c mobile\uff0c Android\uff0c \u52d5\u6f2b\uff0c Python\uff0c teacher\uff0c \u88dc\u7fd2\uff0c \u96fb\u8166\u88dc\u7fd2 \u8cc7\u8a0a, \u7535\u5b50\u8ba1\u7b97\u673a, IT ,Game, apple, movie, Computer,student,Java,\u6559\u80b2, ,\u5b66\u751f, \u5b66\u4e60, learn, \u6559\u5b66,  Android, apple,anime, animation, \u4fe1\u606f\u6280\u672f, \u7a0b\u5e8f\u8bbe\u8ba1, \u79fb\u52a8\u7535\u8bdd, \u8cc7\u8a0a\u79d1\u6280,Game, Jeu, Juego,Call Of Duty ,\u4f7f\u547d\u53ec\u559a , \u6e38\u620f, \u7535\u5b50\u6e38\u620f,, \u591a\u4eba\u7535\u5b50\u6e38\u620f, \u7f51\u7edc\u6e38\u620f\uff0conline\uff0conline game, \u624b\u673a\u6e38\u620f, mobile \\\"><\/p>\n<h2 data- data-id=\"overview\">1. Overview<\/h2>\n<div class=\"bd-anchor\" id=\"overview\"><\/div>\n<p>In this quick tutorial, we&#8217;re going to take a close look at how to find the last modified file in a specific directory in Java.<\/p>\n<p>First, we&#8217;ll start with the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-io-vs-nio#1-io---javaio\">legacy IO<\/a> and the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-io-vs-nio#2-nio---javanio\">modern NIO<\/a> APIs. Then, we&#8217;ll see how to use the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/commons.apache.org\/proper\/commons-io\/\">Apache Commons IO<\/a> library to accomplish the same thing.<\/p>\n<h2 data- data-id=\"with-java-7\"><strong>2. Using the <\/strong><em>java.io <\/em><strong>API<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"with-java-7\"><\/div>\n<p>The legacy <em>java.io <\/em>package provides the <em>File<\/em> class to encapsulate an abstract representation of file and directory pathnames.<\/p>\n<p>Thankfully, the <em>File<\/em> class comes with a handy method called <em>lastModified(). <\/em><strong>This method\u00a0returns the last modified time of the file denoted by an abstract pathname<\/strong>.<\/p>\n<p>Let&#8217;s now look at how we can use the <em>java.io.File<\/em> class to achieve the intended purpose:<\/p>\n<pre><code class=\"language-java\">public static File findUsingIOApi(String sdir) {\r\n    File dir = new File(sdir);\r\n    if (dir.isDirectory()) {\r\n        Optional&lt;File&gt; opFile = Arrays.stream(dir.listFiles(File::isFile))\r\n          .max((f1, f2) -&gt; Long.compare(f1.lastModified(), f2.lastModified()));\r\n        if (opFile.isPresent()){\r\n            return opFile.get();\r\n        }\r\n    }\r\n    return null;\r\n}<\/code><\/pre>\n<p>As we can see, we use the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-8-streams\">Java 8 Stream API<\/a> to loop through an array of files. Then, we invoke the <em>max() <\/em>operation to get the file with the most recent modifications<em>.<\/em><\/p>\n<p>Notice that we use an <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-optional\"><em>Optional<\/em> instance<\/a> to encapsulate the last modified file.<\/p>\n<p>Bear in mind that this approach is considered old fashion and out of date. <strong>However, we can use it if we want to stay compatible with the Java legacy IO world<\/strong>.<\/p>\n<h2 data-id=\"using-thejavanio-api\"><strong>3. Using <\/strong>the\u00a0<em>java.nio <\/em><strong>API<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"using-thejavanio-api\"><\/div>\n<p>The introduction of the NIO API is a turning point for file system management. The <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-nio-2-file-api\">new version NIO.2<\/a> shipped in Java 7 comes with a set of enhanced features for better file management and manipulation.<\/p>\n<p>As a matter of fact, the <em>java.nio.file.Files <\/em>class offers great flexibility when it comes to manipulating files and directories in Java.<\/p>\n<p>So, let&#8217;s see how we can make use of the <em>Files <\/em>class to get the last modified file in a directory:<\/p>\n<pre><code class=\"language-java\">public static Path findUsingNIOApi(String sdir) throws IOException {\r\n    Path dir = Paths.get(sdir);\r\n    if (Files.isDirectory(dir)) {\r\n        Optional&lt;Path&gt; opPath = Files.list(dir)\r\n          .filter(p -&gt; !Files.isDirectory(p))\r\n          .sorted((p1, p2)-&gt; Long.valueOf(p2.toFile().lastModified())\r\n            .compareTo(p1.toFile().lastModified()))\r\n          .findFirst();\r\n        if (opPath.isPresent()){\r\n            return opPath.get();\r\n        }\r\n    }\r\n    return null;\r\n}<\/code><\/pre>\n<p>Similarly to the first example, we rely on the Steam API to get only files. <strong>Then, we sort our files based on the last modified time with the help of a <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-8-lambda-expressions-tips\">lambda expression<\/a><\/strong>.<\/p>\n<h2 data- data-id=\"conclusion\">4. <strong>Using Apache Commons IO<\/strong><\/h2>\n<div class=\"bd-anchor\" id=\"conclusion\"><\/div>\n<p>The Apache Commons IO has taken file system management to the next level. It provides a set of handy classes, file comparators, file filters, and much more.<\/p>\n<p><strong>Fortunately for us, the library offers the<\/strong> <strong><em>LastModifiedFileComparator <\/em>class which can be used as a<\/strong> <strong>comparator to sort an array of files by their last modified time<\/strong>.<\/p>\n<p>Firstly, we need to add the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/search.maven.org\/classic\/#artifactdetails%7Ccommons-io%7Ccommons-io%7C2.7%7Cjar\"><em>commons-io<\/em> dependency<\/a> in our <em>pom.xml<\/em>:<\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\r\n    &lt;groupId&gt;commons-io&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;commons-io&lt;\/artifactId&gt;\r\n    &lt;version&gt;2.7&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/code><\/pre>\n<p>Lastly, let&#8217;s showcase how to find the last modified file in a folder using Apache Commons IO:<\/p>\n<pre><code class=\"language-java\">public static File findUsingCommonsIO(String sdir) {\r\n    File dir = new File(sdir);\r\n    if (dir.isDirectory()) {\r\n        File[] dirFiles = dir.listFiles((FileFilter)FileFilterUtils.fileFileFilter());\r\n        if (dirFiles != null && dirFiles.length &gt; 0) {\r\n            Arrays.sort(dirFiles, LastModifiedFileComparator.LASTMODIFIED_REVERSE);\r\n            return dirFiles[0];\r\n        }\r\n     }\r\n    return null;\r\n}<\/code><\/pre>\n<p data-id=\"conclusion\"><strong>As shown above, we use the<\/strong> <strong>singleton instance <em>LASTMODIFIED_REVERSE<\/em> to sort our array of files in reverse\u00a0order<\/strong>.<\/p>\n<p data-id=\"conclusion\">Since the array is reversely sorted, then the last modified file is the first element of the array.<\/p>\n<h2 data- data-id=\"conclusion-1\">5. Conclusion<\/h2>\n<div class=\"bd-anchor\" id=\"conclusion-1\"><\/div>\n<p>In this tutorial, we explored different ways to find the last modified file in a particular directory. Along the way, we used APIs that are part of the JDK and the Apache Commons IO external library.<\/p>\n<p>As always, the complete code source of the examples is available <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/github.com\/eugenp\/tutorials\/tree\/master\/core-java-modules\/core-java-io-3\">over on GitHub<\/a>.<\/p>\n<p>The post <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-last-modified-file\/\" >Find the Last Modified File in a Directory with Java<\/a> first appeared on <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/\" >Baeldung<\/a>.<\/p>\n<p><Img align=\"left\" border=\"0\" height=\"1\" width=\"1\" alt=\"\" style=\"border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;\" hspace=\"0\" src=\"https:\/\/feeds.feedblitz.com\/~\/i\/635997480\/0\/baeldung\"><\/p>\n<div style=\"clear:both;padding-top:0.2em;\"><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/635997480\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Share on Google+\" href=\"https:\/\/feeds.feedblitz.com\/_\/30\/635997480\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/googleplus20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/635997480\/baeldung,\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/635997480\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/635997480\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/635997480\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/java-last-modified-file#respond\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&#160;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/java-last-modified-file\/feed\/\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>&#160;<\/div>\n\n<p class=\"syndicated-attribution\"><figure class= \\\"wp-block-image alignnone \\\"><img src= \\\"http:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-content\/uploads\/2016\/05\/logo2-2.png\\\" alt=\\\"IT\u96fb\u8166\u88dc\u7fd2 java\u88dc\u7fd2 \u70ba\u5927\u5bb6\u914d\u5c0d\u96fb\u8166\u88dc\u7fd2,IT freelance, \u79c1\u4eba\u8001\u5e2b, PHP\u88dc\u7fd2,CSS\u88dc\u7fd2,XML,Java\u88dc\u7fd2,MySQL\u88dc\u7fd2,graphic design\u88dc\u7fd2,\u4e2d\u5c0f\u5b78ICT\u88dc\u7fd2,\u4e00\u5c0d\u4e00\u79c1\u4eba\u88dc\u7fd2\u548cFreelance\u81ea\u7531\u5de5\u4f5c\u914d\u5c0d\u3002\\\"\/><figcaption>\u7acb\u523b\u8a3b\u518a\u53ca\u5831\u540d\u96fb\u8166\u88dc\u7fd2\u8ab2\u7a0b\u5427!<\/figcaption><\/figure>\r\n<\/br>Find A Teacher Form:\r\n<\/br>https:\/\/docs.google.com\/forms\/d\/1vREBnX5n262umf4wU5U2pyTwvk9O-JrAgblA-wH9GFQ\/viewform?edit_requested=true#responses\r\n<\/br><\/br>Email:\r\n<\/br>public1989two@gmail.com<br><br><br><br><br><br><br>\r\n<a href=www.itsec.hk style=color:#FFFFFF;>www.itsec.hk<\/a><br>\r\n<a href=\\\"www.itsec.vip\\\" style=color:#FFFFFF;>www.itsec.vip<\/a><br>\r\n<a href=\\\"www.itseceu.uk\\\" style=color:#FFFFFF;>www.itseceu.uk<\/a><br><\/p>","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Learn about file access management in Java<\/p>\n<p>The post <a rel=\"NOFOLLOW noopener noreferrer\" href=\"https:\/\/feeds.feedblitz.com\/~\/635997480\/0\/baeldung~Find-the-Last-Modified-File-in-a-Directory-with-Java\/\" target=\"_blank\">Find the Last Modified File in a Directory with Java<\/a> first appeared on <a rel=\"NOFOLLOW noopener noreferrer\" href=\"https:\/\/www.baeldung.com\/\" target=\"_blank\">Baeldung<\/a>.<\/p>\n<div><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/635997480\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\"><\/a>&nbsp;<a title=\"Share on Google+\" href=\"https:\/\/feeds.feedblitz.com\/_\/30\/635997480\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/googleplus20.png\"><\/a>&nbsp;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/635997480\/baeldung,\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\"><\/a>&nbsp;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/635997480\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\"><\/a>&nbsp;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/635997480\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\"><\/a>&nbsp;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/635997480\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\"><\/a>&nbsp;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/java-last-modified-file#respond\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&nbsp;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/java-last-modified-file\/feed\/\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>&nbsp;<\/div>\n<\/div>","protected":false},"author":792,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"slim_seo":{"title":"Find the Last Modified File in a Directory with Java - ITTeacherITFreelance.hk","description":"Learn about file access management in Java The post Find the Last Modified File in a Directory with Java first appeared on Baeldung . &nbsp; &nbsp; &nbsp; &nbsp"},"footnotes":""},"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/83101"}],"collection":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/792"}],"replies":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=83101"}],"version-history":[{"count":6,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/83101\/revisions"}],"predecessor-version":[{"id":85415,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/83101\/revisions\/85415"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=83101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=83101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=83101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}