Cách tốt nhất để tạo một tệp tạm thời trong Android là gì?
Có thể File.createTempFile được sử dụng? Các tài liệu rất mơ hồ về nó.
Cụ thể, không rõ khi nào các tệp tạm thời được tạo bằng File.createTempFile
sẽ bị xóa, nếu có.
Cách tốt nhất để tạo một tệp tạm thời trong Android là gì?
Có thể File.createTempFile được sử dụng? Các tài liệu rất mơ hồ về nó.
Cụ thể, không rõ khi nào các tệp tạm thời được tạo bằng File.createTempFile
sẽ bị xóa, nếu có.
Câu trả lời:
Đây là những gì tôi thường làm:
File outputDir = context.getCacheDir(); // context being the Activity pointer
File outputFile = File.createTempFile("prefix", "extension", outputDir);
Về việc xóa chúng, tôi cũng không hoàn toàn chắc chắn. Vì tôi sử dụng điều này trong quá trình thực hiện bộ đệm, tôi xóa thủ công các tệp cũ nhất cho đến khi kích thước thư mục bộ đệm giảm xuống giá trị đặt trước của tôi.
Thực hành tốt nhất trên các tệp tạm thời bên trong và bên ngoài :
Nếu bạn muốn lưu trữ một số dữ liệu, thay vì lưu trữ liên tục, bạn nên sử dụng
getCacheDir()
để mở Tệp đại diện cho thư mục nội bộ nơi ứng dụng của bạn sẽ lưu các tệp bộ đệm tạm thời.Khi thiết bị còn ít dung lượng lưu trữ nội bộ, Android có thể xóa các tệp bộ nhớ cache này để khôi phục dung lượng. Tuy nhiên, bạn không nên dựa vào hệ thống để dọn sạch các tệp này cho bạn. Bạn phải luôn tự duy trì các tệp bộ nhớ cache và ở trong một giới hạn dung lượng hợp lý được sử dụng, chẳng hạn như 1MB. Khi người dùng gỡ cài đặt ứng dụng của bạn, các tệp này sẽ bị xóa.
Để mở một tệp đại diện cho thư mục lưu trữ ngoài, nơi bạn nên lưu các tệp bộ đệm, hãy gọi
getExternalCacheDir()
. Nếu người dùng gỡ cài đặt ứng dụng của bạn, các tệp này sẽ tự động bị xóa.Tương tự như
ContextCompat.getExternalFilesDirs()
, được đề cập ở trên, bạn cũng có thể truy cập vào thư mục bộ đệm trên bộ nhớ ngoài thứ cấp (nếu có) bằng cách gọiContextCompat.getExternalCacheDirs()
.Mẹo: Để duy trì không gian tệp và duy trì hiệu suất của ứng dụng, điều quan trọng là bạn phải quản lý cẩn thận các tệp bộ nhớ cache của mình và xóa những tệp không cần thiết nữa trong suốt vòng đời của ứng dụng.
Đối với các tệp nội bộ tạm thời, chúng là 2 tùy chọn
1.
File file;
file = File.createTempFile(filename, null, this.getCacheDir());
2.
File file
file = new File(this.getCacheDir(), filename);
Cả hai tùy chọn đều thêm các tệp trong thư mục bộ đệm của ứng dụng và do đó có thể bị xóa để tạo khoảng trống theo yêu cầu nhưng tùy chọn 1 sẽ thêm một số ngẫu nhiên vào cuối tên tệp để giữ cho các tệp duy nhất. Nó cũng sẽ thêm một phần mở rộng tập tin .tmp
theo mặc định, nhưng nó có thể được đặt thành bất cứ thứ gì thông qua việc sử dụng tham số thứ 2. Việc sử dụng số ngẫu nhiên có nghĩa là mặc dù chỉ định tên tệp, nó không giữ nguyên như số được thêm vào cùng với phần mở rộng hậu tố / tệp ( .tmp
theo mặc định), ví dụ: bạn chỉ định tên tệp của mình là internal_file
và xuất hiện dưới dạng internal_file1456345.tmp
. Trong khi đó, bạn có thể chỉ định tiện ích mở rộng mà bạn không thể chỉ định số được thêm vào. Tuy nhiên, bạn có thể tìm thấy tên tệp mà nó tạo ra thông quafile.getName();
, nhưng bạn sẽ cần lưu trữ nó ở đâu đó để bạn có thể sử dụng nó bất cứ khi nào bạn muốn ví dụ để xóa hoặc đọc tệp. Do đó, vì lý do này, tôi thích tùy chọn thứ 2 vì tên tệp bạn chỉ định là tên tệp được tạo.
Bạn có thể sử dụng thư mục bộ đệm bằng bối cảnh.getCacheDir () .
File temp=File.createTempFile("prefix","suffix",context.getCacheDir());
Bạn có thể sử dụng File.deleteOnExit()
phương pháp
https://developer.android.com/reference/java/io/File.html#deleteOnExit ()
Nó được tham chiếu tại đây https://developer.android.com/reference/java/io/File.html#createTempFile(java.lang.String , java.lang.String, java.io.File)
Làm điều đó trong đơn giản. Theo tài liệu https://developer.android.com/training/data-st Storage / files
String imageName = "IMG_" + String.valueOf(System.currentTimeMillis()) +".jpg";
picFile = new File(ProfileActivity.this.getCacheDir(),imageName);
và xóa nó sau khi sử dụng
picFile.delete()