2 votes

Java I/O : Définition de l'horodatage

Je suis en train de lire la documentation d'Oracle et j'ai rencontré quelque chose qui me semble être une erreur.

Peut-être que quelqu'un peut confirmer ou expliquer mieux que la documentation.

Source : https://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html

Code :

Path file = ...;
BasicFileAttributes attr =
    Files.readAttributes(file, BasicFileAttributes.class);
long currentTime = System.currentTimeMillis();
FileTime ft = FileTime.fromMillis(currentTime);
Files.setLastModifiedTime(file, ft);

Ne devrait pas setLastModifiedTime() être appelé sur attr au lieu de Files ? ( attr.setLastModifiedTime(file, ft) )

Si ce n'est pas le cas, pourquoi attr nécessaire ?

0voto

akshaya pandey Points 498

Le code interne de cette méthode est :

  public static Path setLastModifiedTime(Path path, FileTime time)
        throws IOException
    {
        getFileAttributeView(path, BasicFileAttributeView.class)
            .setTimes(time, null, null);
        return path;
    }

Comme vous pouvez le voir, il récupère l'attribut en utilisant la fonction getFileAttributeView() et définit ensuite le temps sur cet attribut.

Cette méthode n'est qu'une API de commodité fournie dans la classe Files.

0voto

mallikarjun Points 230

BasicFileAttributes permet d'obtenir les attributs de base de nombreux systèmes de fichiers et ne définit aucune méthode de modification. Ainsi, pour modifier les attributs LastModifiedTime vous devez utiliser la méthode définie dans la classe Fichiers.

POUR INFORMATION : Dossiers

0voto

user7294900 Points 16410

Vous avez raison, attr n'est pas utilisé dans cet extrait spécifique, il semble qu'il s'agisse d'un copier-coller du même code pour différents extraits,

Parce que le contexte des snippets est Basic File Attributes

Avant et après l'échantillon, d'autres extraits utilisent attr , comme :

System.out.println("size: " + attr.size());  

System.out.println("isReadOnly is " + attr.isReadOnly());

Ainsi, dans cet extrait, vous pouvez supprimer la ligne d'affectation inutilisée

BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class);`

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X