2014-05-21 8 views
0

FileUtils.copyDirectory으로 올바르게 수정 한 날짜를 쓰지 않습니다. Android SD 카드가 마운트 해제되어 있지 않으면 수정 된 날짜가 올바르게 기록되지 않습니다. Fileutils의에서 코드의 간단한 비트를 사용 :FileUtils.copyDirectory는 Android SD 카드를 마운트 해제하지 않으면

try { 
     FileUtils.copyDirectory(srcDir2, destDir2); 
    } catch (IOException e) { 

내가 내 응용 프로그램에 필수적인 디렉토리에있는 파일의 날짜 수정 된 정보를 보존 SD 카드에 전화 내부 스토리지에서 디렉토리를 복사 할 수 있습니다.

슬프게도 SD 카드를 꺼내지 않고 제거하면 복사 된 dir의 파일에 대한 모든 수정 된 정보가 파일이 복사 된 시간으로 설정됩니다. SD가 올바르게 마운트 해제되지 않으면 날짜 수정 정보가 올바르게 보존됩니다.

나는 플러시 및 닫기 기능을 시도했지만 이러한 종류의 파일과 관련이 없습니다. 마운트 해제하지 않고 디렉토리를 완성하기 위해 누락 된 코드는 무엇입니까? 나는 안드로이드 장치를 사용하여 전체 크기의 SD 슬롯을 사용하고 있습니다. 적절한 배출없이 노크되면 모든 정보를 잃어 버릴 위험이 없습니다.

답변

0

세 번째 매개 변수로 제어하려고하는 플래그를 허용하는 버전이 있습니다 마지막 수정 일. 문서 here을 확인할 수 있습니다. 그러나 사용중인 메소드가 기본적으로 날짜를 보존하려고 시도하는 것처럼 보입니다. 사실, 소스 코드를 읽는 중, 사용하고있는 메소드는 세 번째 매개 변수가 true로 설정된이 메소드를 호출합니다. 당신의 방법에 대한 문서에서

은 말했다된다

참고 :이 방법은 (긴) File.setLastModified 사용하여 파일 '마지막으로 수정 한 날짜/시간을 유지하려고하지만 그것은 그 것을 보장 할 수 없습니다 작업이 성공합니다. 수정 조작이 실패하면 표시가 제공되지 않습니다.

마지막으로이 라이브러리가 파일 또는 디렉토리를 복사 할 때마다 File.setLastModified을 소스 파일의 마지막 수정 날짜가있는 대상 파일을 통해 호출하는 것입니다. 이 방법은 당신이 다른 질문에서 볼 수 있듯이, 안드로이드에 신뢰할 수없는 것으로보고되었습니다

그러나 귀하의 경우

Android set last modified time for the file
file.lastModified() is never what was set with file.setLastModified()
Is it possible to reset the last modified date of an Android file?, 당신이 해결 방법을 제공하기 위해 노력하고있다 생각 그렇게 설계된 것입니다. 나는 전문가는 아니지만 OS 또는 FileSystem에서 관리합니다. 마운트 해제 메커니즘은 목적을 달성하는데, 앱 개발자로서 그다지 많은 기능을 수행 할 수 없다고 생각합니다.

+0

> 편집 : 위의 링크를 살펴본 결과 동일한 문제인지 확실하지 않습니다. 나를 위해 Fileutils 및 File.setLastModified 모두 작동합니다. 나는 안드로이드 OS가 카드를 마운트 해제하지 않고도 걸려있는 나머지 정보를 쓰도록하는 방법이 필요합니다. – user3526535

+0

문제가'setLastModified'와는 관련이 없더라도 , 당신이 OS/파일 시스템에 대항하여 싸우고 있다고 생각합니다. Android는 많은 FS를 지원합니다. 파일에 대한 변경 사항은 즉시 SDCard로 플러시되지 않을 수 있습니다. SDCard를 제거하는 것은 간단하고 평범하지 않습니다. –

+0

전적으로 동의하지만 때로는 이러한 것들이 도움이 될 수 없습니다. 사용자 오류 또는 sd는 나가 진짜로 정확한 날짜를 수정 한 정보를 풀고 싶지 않는이 상황에서 밖으로 두드려 얻는다. 도와 줘서 고마워.) 진짜 고통이다. – user3526535