Android에서 임시 파일을 만드는 가장 좋은 방법은 무엇입니까?
File.createTempFile 을 사용할 수 있습니까 ? 문서가 매우 모호합니다.
특히, 작성된 임시 파일이 언제 File.createTempFile
삭제되는지는 확실하지 않습니다 .
Android에서 임시 파일을 만드는 가장 좋은 방법은 무엇입니까?
File.createTempFile 을 사용할 수 있습니까 ? 문서가 매우 모호합니다.
특히, 작성된 임시 파일이 언제 File.createTempFile
삭제되는지는 확실하지 않습니다 .
답변:
이것이 내가 일반적으로하는 일입니다.
File outputDir = context.getCacheDir(); // context being the Activity pointer
File outputFile = File.createTempFile("prefix", "extension", outputDir);
그들의 삭제에 관해서는 확실하지 않습니다. 캐시 구현에서 이것을 사용하기 때문에 캐시 디렉토리 크기가 사전 설정 값이 될 때까지 가장 오래된 파일을 수동으로 삭제합니다.
일부 데이터를 영구적으로 저장하지 않고
getCacheDir()
캐시하려면 애플리케이션이 임시 캐시 파일을 저장해야하는 내부 디렉토리를 나타내는 파일을 열어야합니다.기기의 내부 저장 공간이 부족하면 Android에서 이러한 캐시 파일을 삭제하여 공간을 복구 할 수 있습니다. 그러나 이러한 파일을 정리하기 위해 시스템에 의존해서는 안됩니다. 항상 캐시 파일을 직접 유지 관리하고 1MB와 같이 적당한 공간에서 사용하십시오. 사용자가 응용 프로그램을 제거하면 이러한 파일이 제거됩니다.
캐시 파일을 저장해야하는 외부 저장소 디렉토리를 나타내는 파일을 열려면을 호출하십시오
getExternalCacheDir()
. 사용자가 응용 프로그램을 제거하면 이러한 파일이 자동으로 삭제됩니다.유사하게
ContextCompat.getExternalFilesDirs()
, 위에서 언급 한, 당신은 또한 호출하여 (사용 가능한 경우) 보조 외부 저장 장치에 캐시 디렉토리에 액세스 할 수 있습니다ContextCompat.getExternalCacheDirs()
.팁 : 파일 공간을 유지하고 앱 성능을 유지하려면 캐시 파일을 신중하게 관리하고 앱 수명주기 동안 더 이상 필요하지 않은 파일을 제거하는 것이 중요합니다.
임시 내부 파일의 경우 두 가지 옵션이 있습니다
1.
File file;
file = File.createTempFile(filename, null, this.getCacheDir());
2.
File file
file = new File(this.getCacheDir(), filename);
두 옵션 모두 응용 프로그램 캐시 디렉토리에 파일을 추가하므로 필요에 따라 공간을 확보하기 위해 지울 수 있지만 옵션 1은 파일 이름 끝에 임의의 숫자를 추가하여 파일을 고유하게 유지합니다. 또한 .tmp
기본적으로 파일 확장자를 추가 하지만 2 번째 매개 변수를 사용하여 무엇이든 설정할 수 있습니다. 수 (접미사 / 파일 확장자와 함께 추가 될 파일 이름을 지정에도 불구하고 난수 수단의 사용은 동일하게 유지하지 않습니다 .tmp
기본적으로) 당신은 당신의 파일 이름을 지정 예 internal_file
와 같이 나온다 internal_file1456345.tmp
. 내선 번호를 지정할 수있는 반면 추가되는 번호는 지정할 수 없습니다. 그러나 생성 한 파일 이름을 찾을 수 있습니다file.getName();
하지만 파일을 삭제하거나 읽을 때마다 사용할 수 있도록 어딘가에 저장해야합니다. 따라서 지정한 파일 이름이 만들어진 파일 이름이므로 두 번째 옵션을 선호합니다.
context.getCacheDir ()을 사용하여 캐시 디렉토리를 사용할 수 있습니다 .
File temp=File.createTempFile("prefix","suffix",context.getCacheDir());
당신은 File.deleteOnExit()
방법을 사용할 수 있습니다
https://developer.android.com/reference/java/io/File.html#deleteOnExit ()
여기에서 참조됩니다 https://developer.android.com/reference/java/io/File.html#createTempFile(java.lang.String , java.lang.String, java.io.File)
간단하게하십시오. 설명서에 따르면 https://developer.android.com/training/data-storage/files
String imageName = "IMG_" + String.valueOf(System.currentTimeMillis()) +".jpg";
picFile = new File(ProfileActivity.this.getCacheDir(),imageName);
사용 후 삭제
picFile.delete()