이것은 sdcard에서 sharedpreference 파일을 toand fro로 복사하는 데 사용하는 코드입니다.File.hashCode()가 다른 이유는 무엇입니까?
File fileSrc = new File(filePath, "userdata.xml");
File fileDes = new File("/data/data/com.nik/shared_prefs/", "userdata.xml");
...
...
private void copyFile(File fileSrc, File fileDes) {
FileInputStream fileinputstream=null;
FileOutputStream fileoutputstream=null;
try {
fileinputstream = new FileInputStream(fileSrc);
fileoutputstream = new FileOutputStream(fileDes);
byte[] buffer = new byte[4096];
int count = 0;
while ((count = fileinputstream.read(buffer)) > 0) {
fileoutputstream.write(buffer, 0, count);
}
fileinputstream.close();
fileoutputstream.flush();
fileoutputstream.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
if(fileSrc.hashCode() == fileDes.hashCode()){
Log.d("Copy result: ", "Files Equal!");
} else {
Log.d("Copy result: ", "Files not Equal!");
}
if(fileSrc == fileDes){
Log.d("=>Copy result: ", "Files Equal!");
} else {
Log.d("=>Copy result: ", "Files not Equal!");
}
}
위의 코드는 성공적으로 실행되고 파일을 복사하지만 항상 "파일이 같지 않음!"이라고 표시됩니다. 로그에.
파일을 탐색기에서 열면 내용이 동일합니다. 그렇다면 왜 "파일이 같지 않습니다!" 두 경우에 .....
편집 :
내가 파일private MessageDigest fileHash(File file) {
MessageDigest md=null;
try {
md = MessageDigest.getInstance("SHA-256");
FileInputStream fileinputstream = new FileInputStream(file);
byte[] dataBytes = new byte[1024];
int nread = 0;
while ((nread = fileinputstream.read(dataBytes)) != -1) {
md.update(dataBytes, 0, nread);
}
}
catch(IOException e) {
e.printStackTrace();
}
catch(NoSuchAlgorithmException e){
e.printStackTrace();
}
return md;
}
의 SHA-256 해시를 만들려면 다음 방법을 생성
if(fileHash(fileSrc) == fileHash(fileDes)){
Log.d("=>Copy result: ", "Files Equal!");
} else {
Log.d("=>Copy result: ", "Files not Equal!");
}
로 불리는
여전히 "파일이 같지 않습니다!"라는 메시지가 나타납니다.
때문에 두 파일이 동일한 지 확인 할 수있는 방법이 .. 내용 -슬기로운. –
@NiktheGeeK : 예 - 파일의 내용을 읽습니다. (첫 번째 단계에서 길이를 확인한 다음 두 파일 (* 논리적으로 * 바이트 단위 (하지만 아마도 버퍼 단위))에서 읽기 시작하고 바이트.) –
같은 ... inputstream 및 outputstream을 열고, 데이터를 읽고 비교 .. 파일의 해시를 얻고 비교할 다른 sinple 방법이 있습니까 ?? –