ここで私はで始まったコードです:名前を変更した後、Javaでファイルの最終更新時刻を設定しようとすると、それ
long modifiedTime = [some time here];
File oldFile = new File("old_name.txt");
boolean renamed = oldFile.renameTo(new File("new_name.txt");
boolean timeChanged = oldFile.setLastModified(modifiedTime);
System.out.println("renamed: " + renamed);
System.out.println("time changed: " + timeChanged);
そして、私が見た出力されました:
renamed: true
time changed: false
しかし、私が試したとき:
long modifiedTime = [some time here];
boolean renamed = new File("old_name.txt").renameTo(new File("new_name.txt"));
boolean timeChanged = new File("new_name.txt").setLastModified(modifiedTime);
System.out.println("renamed: " + renamed);
System.out.println("time changed: " + timeChanged);
は、正常に動作するように見えました、この出力に:
renamed: true
time changed: true
なぜそれが第二のアプローチが動作することで、最初のものはないでしょうか?
これは間違いなく明確です。しかし、それは悪いAPIデザインのように見える!私は、ファイルオブジェクトのrenameToを呼び出すと、ファイルのファイル名を実際に変更する突然変異の呼び出しになると思いますが、そうではないと思います。 –