第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

復(fù)制文件的文件創(chuàng)建日期 java nio

復(fù)制文件的文件創(chuàng)建日期 java nio

牛魔王的故事 2023-09-20 17:04:37
我想找出文件的創(chuàng)建日期,并在此處找到了幾個非常相似的答案。我的問題是,如果文件從一個文件夾移動到另一個文件夾,它就不起作用。我根本沒有修改該文件 - 只是將其復(fù)制到另一個目錄。//file location before copy paste C:\\Users\\momo\\temp\\A.csvFile f = new File("C:\\Users\\momo\\temp\\xyz\\A.csv");BasicFileAttributes attributes = Files.readAttributes(Paths.get(f.toURI()), BasicFileAttributes.class);FileTime fileTime = attributes.creationTime();Date date = new Date(fileTime.toMillis());System.out.println(date);要重現(xiàn)此情況,您只需復(fù)制舊文件并將其粘貼到另一個目錄中。資源管理器顯示舊日期,但上述代碼的輸出是復(fù)制的時間。
查看完整描述

1 回答

?
智慧大石

TA貢獻1946條經(jīng)驗 獲得超3個贊

我在使用 OpenJDK 13 的 Windows 10 上看到了相同的行為。雖然您提到文件資源管理器中的創(chuàng)建時間是正確的,但通過 Java 查詢時則不然。我的經(jīng)歷是不同的;文件資源管理器顯示正確的(即保留的)上次修改時間,但是當(dāng)我打開副本的屬性對話框時,創(chuàng)建時間設(shè)置為復(fù)制文件時。

請注意,雖然不保留創(chuàng)建時間可能是不可取的,但我不確定這是否會被視為 Java 中的錯誤。的文檔Files#copy(Path,Path,CopyOption...)說:

嘗試將與此文件關(guān)聯(lián)的文件屬性復(fù)制到目標文件。復(fù)制的確切文件屬性取決于平臺和文件系統(tǒng),因此未指定。last-modified-time如果源文件存儲和目標文件存儲都支持,則至少會復(fù)制到目標文件。復(fù)制文件時間戳可能會導(dǎo)致精度損失。

COPY_ATTRIBUTES- 來自選項表中的描述。

正如您所看到的,至少只會復(fù)制最后修改時間,即使這樣也不一定得到保證。這也表明問題可能是特定于平臺的;如果 Windows,或者至少 Java 使用的 Windows API,不支持保留創(chuàng)建時間,那么您所看到的就是預(yù)期的行為。但如果您認為該行為是一個錯誤,您可以隨時提交錯誤報告。不過,在此之前,請確保報告尚不存在,包括已解決的報告,例如“無法修復(fù)”的報告。

注意:以上段落主要針對 Windows。不幸的是,我目前無法訪問其他操作系統(tǒng),因此我無法測試其他操作系統(tǒng)是否有同樣的問題。您從未明確提及您正在使用Windows,盡管我假設(shè)您是基于問題中的路徑(即"C:\\Users\\...")以及您對“explorer”一詞的使用。

也就是說,我相信可能有一個解決方法:在復(fù)制目錄或文件后自行復(fù)制創(chuàng)建時間:

Files.copy(source, target, options); // 'options' should include COPY_ATTRIBUTES

Files.setAttribute(target, "creationTime", Files.getAttribute(source, "creationTime"));

COPY_ATTRIBUTES注釋說應(yīng)該包含在內(nèi)的原因是,正如記錄的那樣,該選項可能會導(dǎo)致復(fù)制任意數(shù)量的屬性,即使創(chuàng)建時間不是其中之一。當(dāng)然,如果您想確保最后修改時間和訪問時間也被復(fù)制,您可以將上面的內(nèi)容修改為:


Files.copy(source, target, options); // 'options' should include COPY_ATTRIBUTES


BasicFileAttributes srcAttrs = Files.readAttributes(source, BasicFileAttributes.class);

BasicFileAttributeView tgtView = Files.getFileAttributeView(target, BasicFileAttributeView.class);


tgtView.setTimes(srcAttrs.lastModifiedTime(), srcAttrs.lastAccessTime(), srcAttrs.creationTime());

可能有趣的是,它Files#copy(Path,Path,CopyOption...)所做的事情與第二個示例非常相似,但前提是源和目標具有不同的FileSystemProvider實例。否則,該方法將委托給共享FileSystemProvider,這對于每個實現(xiàn)都是不同的。


查看完整回答
反對 回復(fù) 2023-09-20
  • 1 回答
  • 0 關(guān)注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號