的兩個版本的差異如何檢查文件內容是相同的服務器Perforce的JAVA API的版本。在將任何文件更新到perforce軟件倉庫之前,我想檢查本地文件和軟件倉庫文件的內容是否存在差異。如果沒有區別,則忽略提交該文件。如何採取的Perforce庫文件
回答
()方法:
或者,你是具體的事情做(不提交不變的文件),只需使用「leaveUnchanged」提交選項,而不是自己做同樣的工作。
我喜歡這一個。我會試試看將該選項設置爲「leaveUnchanged」 –
請注意,您可以設置'SubmitOptions'每個單獨提交命令,或者你也可以爲您的整個工作區的'SubmitOptions',然後每提交行爲這種方式。 –
是簡單的事情。只需生成原始文件的MD5散列,並在更新之前再次生成新文件的MD5散列。
現在比較的哈希值這兩個文件。如果兩者都是相同的,那麼這兩個文件的內容是相同的,如果不是,那麼它們是不同的,並且你很好地更新。
這裏是生成和輕鬆地檢查MD5我想你想的getDiffFiles的效用,
public class MD5Utils {
private static final String TAG = "MD5";
public static boolean checkMD5(String md5, File updateFile) {
if (TextUtils.isEmpty(md5) || updateFile == null) {
Log.e(TAG, "MD5 string empty or updateFile null");
return false;
}
String calculatedDigest = calculateMD5(updateFile);
if (calculatedDigest == null) {
Log.e(TAG, "calculatedDigest null");
return false;
}
Log.v(TAG, "Calculated digest: " + calculatedDigest);
Log.v(TAG, "Provided digest: " + md5);
return calculatedDigest.equalsIgnoreCase(md5);
}
public static String calculateMD5(File updateFile) {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
Log.e(TAG, "Exception while getting digest", e);
return null;
}
InputStream is;
try {
is = new FileInputStream(updateFile);
} catch (FileNotFoundException e) {
Log.e(TAG, "Exception while getting FileInputStream", e);
return null;
}
byte[] buffer = new byte[8192];
int read;
try {
while ((read = is.read(buffer)) > 0) {
digest.update(buffer, 0, read);
}
byte[] md5sum = digest.digest();
BigInteger bigInt = new BigInteger(1, md5sum);
String output = bigInt.toString(16);
// Fill to 32 chars
output = String.format("%32s", output).replace(' ', '0');
return output;
} catch (IOException e) {
throw new RuntimeException("Unable to process file for MD5", e);
} finally {
try {
is.close();
} catch (IOException e) {
Log.e(TAG, "Exception on closing MD5 input stream", e);
}
}
}
}
感謝您的答覆。但是我們不能用Perforce JAVA API來做同樣的事情嗎? –
恐怕你不能。你必須使用標準的JAVA API。 –
感謝您的及時響應 –
- 1. 採取從文件
- 2. 如何使用Perforce p4java庫查找未解決的文件?
- 3. Perforce文件「.perforce」的用途是什麼?
- 4. 採取不同的文件
- 5. Perforce P4命令行:如何在存儲庫中查找文件?
- 6. 如何從版本文件恢復perforce?
- 7. 使用Perforce獲取文件信息
- 8. 本地文件夾文件沒有采取,只採取核心文件(magento)
- 9. 如何在Perforce中協調更新的工作區文件與軟件倉庫?
- 10. perforce替換庫
- 11. Perforce倉庫
- 12. JAXB /如何採取文本元素
- 13. 我如何使require()採取一個文件的直接路徑
- 14. 如何使用python獲取mp3文件的採樣率
- 15. 如何從Perforce存儲庫中刪除無法恢復的文件?
- 16. 獲取從Perforce的
- 17. 如何採取第一個文件名從文件夾中的C#
- 18. Perforce:保持Perforce不改變文本文件格式
- 19. 數據庫不採取表
- 20. C#庫採取截圖?
- 21. Perforce遠程倉庫
- 22. 從沒有客戶工作區的perforce倉庫下載文件?
- 23. 如何從一個AS3包採取動作和.fla文件
- 24. 獲取從perforce中的提交更改的文件列表
- 25. C#:如何採取屏幕
- 26. 如何採取MongoDB備份
- 27. 如何採取列表
- 28. 如何採取從整數
- 29. 如何採取虛框
- 30. 如何採取運行
[確定是否兩個文件存儲相同的內容]可能的重複(http://stackoverflow.com/questions/27379059/determine-if-two-files-store-the-same-content) –