28
28
import java .io .File ;
29
29
import java .io .IOException ;
30
30
import java .io .InputStreamReader ;
31
+ import java .nio .file .FileSystems ;
31
32
import java .nio .file .Files ;
32
33
import java .nio .file .Path ;
33
34
import java .nio .file .attribute .FileTime ;
35
+ import java .nio .file .attribute .UserPrincipal ;
34
36
import java .time .Duration ;
35
37
import java .time .Instant ;
36
38
import java .time .temporal .ChronoUnit ;
@@ -598,13 +600,15 @@ private static int findMainClassIndex(List<String> commandLine) {
598
600
}
599
601
600
602
/**
601
- * Manages temporary files with a given prefix and suffix.
603
+ * Manages temporary files with a given prefix and suffix. When new files are created, temporary
604
+ * files older than 2 hours are deleted.
602
605
*/
603
606
public static class TemporaryFiles {
604
607
private final Path dir ;
605
608
private final FileTime maxAge ;
606
609
private final String prefix ;
607
610
private final String suffix ;
611
+ private final UserPrincipal user ;
608
612
609
613
public TemporaryFiles (String prefix , String suffix ) {
610
614
this .dir = Path .of (System .getProperty ("java.io.tmpdir" ));
@@ -613,6 +617,11 @@ public TemporaryFiles(String prefix, String suffix) {
613
617
FileTime .from (Instant .now ().minus (2 , ChronoUnit .HOURS ));
614
618
this .prefix = prefix ;
615
619
this .suffix = suffix ;
620
+ try {
621
+ this .user = FileSystems .getDefault ().getUserPrincipalLookupService ().lookupPrincipalByName (System .getProperty ("user.name" ));
622
+ } catch (IOException e ) {
623
+ throw new AssertionError (e );
624
+ }
616
625
}
617
626
618
627
/**
@@ -640,7 +649,7 @@ private void removeOldFiles() {
640
649
try {
641
650
Files .list (dir ).filter (this ::match ).forEach (p -> {
642
651
try {
643
- if (Files .getLastModifiedTime (p ).compareTo (maxAge ) < 0 ) {
652
+ if (Files .getOwner ( p ). equals ( user ) && Files . getLastModifiedTime (p ).compareTo (maxAge ) < 0 ) {
644
653
Files .delete (p );
645
654
if (DEBUG ) {
646
655
System .out .println ("deleted " + p );
0 commit comments