簡體   English   中英

如何在Java中測試重命名

[英]How to test rename in Java

假設我將文件A重命名為文件B 現在我要測試一下。 我可以測試B存在而A不存在。 但是,我需要確保B實際上已重命名為 A 如何在Java中為Linux和Windows使用它。

  • 讀取文件A的內容。
  • 哈希它
  • 重命名文件。
  • 讀取文件B的內容。
  • 對其進行哈希處理並將其與文件A的哈希進行比較。

您可以在重命名前后比較文件的MD5校驗和。

請參閱使用Java獲取文件的MD5校驗和

您為什么不僅僅信任File.renameTo(File)返回的布爾值,該布爾值指示重命名是否可行

import java.io.File;

public class Main {
   public static void main(String[] args) {
      File oldName = new File("C:/java1.txt");
      File newName = new File("C:/java2.txt");
      if(oldName.renameTo(newName)) {
         System.out.println("renamed");
      } else {
         System.out.println("Error");
      }
   }
}

現在進行確認,您可以將文件內容以字符串形式存儲在兩個文件中,例如

 String contentOld = new Scanner(new File("java1.txt")).useDelimiter("\\Z").next();


String contentNew = new Scanner(new File("java2.txt")).useDelimiter("\\Z").next();

現在對兩個字符串進行求和,您將得到結果

contentOld.equals(contentNew)

如果兩者內容相同,則返回true

很簡單

if(B.exists()) throw new java.io.IOException("file already exists");

boolean success = A.renameTo(B);
if (success) {
   // File is successfully renamed.
}

但是這種方法依賴於平台,就像API提到的那樣: http : //docs.oracle.com/javase/7/docs/api/java/io/File.html#renameTo%28java.io.File%29

相反,您可以使用

Files.move()

以平台無關的方式,這將引發相關異常,以供您檢查文件是否確實被重命名。 如果該方法將路徑返回到目標文件,則它已正確重命名,否則將引發異常。 您可以參考鏈接。

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#move%28java.nio.file.Path,%20java.nio.file.Path,%20java。 nio.file.CopyOption ... 29%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM