অ্যান্ড্রয়েডে অস্থায়ী ফাইল তৈরির সবচেয়ে ভাল উপায় কী?
পারি File.createTempFile ব্যবহার করা যেতে? ডকুমেন্টেশন এটি সম্পর্কে খুব অস্পষ্ট।
বিশেষত, কখনই File.createTempFile
যদি তৈরি করা অস্থায়ী ফাইলগুলি মুছে ফেলা হয় তা পরিষ্কার নয় ।
অ্যান্ড্রয়েডে অস্থায়ী ফাইল তৈরির সবচেয়ে ভাল উপায় কী?
পারি File.createTempFile ব্যবহার করা যেতে? ডকুমেন্টেশন এটি সম্পর্কে খুব অস্পষ্ট।
বিশেষত, কখনই File.createTempFile
যদি তৈরি করা অস্থায়ী ফাইলগুলি মুছে ফেলা হয় তা পরিষ্কার নয় ।
উত্তর:
আমি সাধারণত এটি করি:
File outputDir = context.getCacheDir(); // context being the Activity pointer
File outputFile = File.createTempFile("prefix", "extension", outputDir);
তাদের মোছার বিষয়ে, আমিও সম্পূর্ণ নিশ্চিত নই। যেহেতু আমি এটি আমার ক্যাশে প্রয়োগের ক্ষেত্রে ব্যবহার করি, তাই ক্যাশে ডিরেক্টরি আকারটি আমার পূর্ব নির্ধারিত মান পর্যন্ত না আসা পর্যন্ত আমি ম্যানুয়ালি পুরানো ফাইলগুলি মুছব।
অভ্যন্তরীণ এবং বাহ্যিক অস্থায়ী ফাইলগুলিতে সেরা অনুশীলন :
আপনি যদি অবিচ্ছিন্নভাবে সঞ্চয় করার চেয়ে কিছু ডেটা ক্যাশে রাখতে চান তবে আপনার এমন
getCacheDir()
একটি ফাইল খোলার জন্য ব্যবহার করা উচিত যা অভ্যন্তরীণ ডিরেক্টরিটি উপস্থাপন করে যেখানে আপনার অ্যাপ্লিকেশনটিতে অস্থায়ী ক্যাশে ফাইলগুলি সংরক্ষণ করা উচিত।যখন ডিভাইসটি অভ্যন্তরীণ স্টোরেজ স্পেসে কম থাকে, অ্যান্ড্রয়েড স্থান পুনরুদ্ধার করতে এই ক্যাশে ফাইলগুলি মুছতে পারে। তবে আপনার জন্য এই ফাইলগুলি পরিষ্কার করার জন্য আপনার সিস্টেমে নির্ভর করা উচিত নয়। আপনার সর্বদা ক্যাশে ফাইলগুলি নিজেরাই বজায় রাখা উচিত এবং 1MB এর মতো স্থানের যুক্তিসঙ্গত সীমাতে থাকা উচিত। যখন ব্যবহারকারী আপনার অ্যাপ্লিকেশন আনইনস্টল করেন, তখন এই ফাইলগুলি সরানো হয়।
বাহ্যিক স্টোরেজ ডিরেক্টরিটি উপস্থাপন করে এমন একটি ফাইল খোলার জন্য যেখানে আপনার ক্যাশে ফাইলগুলি সংরক্ষণ করা উচিত, কল করুন
getExternalCacheDir()
। ব্যবহারকারী যদি আপনার অ্যাপ্লিকেশনটি আনইনস্টল করেন তবে এই ফাইলগুলি স্বয়ংক্রিয়ভাবে মোছা হবে।
ContextCompat.getExternalFilesDirs()
উপরে উল্লিখিত অনুরূপ , আপনি কল করে একটি গৌণ বাহ্যিক সঞ্চয়স্থানে (যদি উপলব্ধ থাকে) একটি ক্যাশে ডিরেক্টরিতেও অ্যাক্সেস করতে পারেনContextCompat.getExternalCacheDirs()
।টিপ: ফাইল স্থান সংরক্ষণ এবং আপনার অ্যাপ্লিকেশনটির কার্যকারিতা বজায় রাখার জন্য, আপনি আপনার ক্যাশে ফাইলগুলি সাবধানতার সাথে পরিচালনা করতে এবং আপনার অ্যাপ্লিকেশনটির জীবনকালীন জুড়ে আর প্রয়োজন নেই এমনগুলি সরিয়ে ফেলা গুরুত্বপূর্ণ।
অস্থায়ী অভ্যন্তরীণ ফাইলগুলির জন্য তাদের 2 টি বিকল্প
1।
File file;
file = File.createTempFile(filename, null, this.getCacheDir());
2।
File file
file = new File(this.getCacheDir(), filename);
উভয় বিকল্প অ্যাপ্লিকেশন ক্যাশে ডিরেক্টরিতে ফাইল যুক্ত করে এবং প্রয়োজনীয় স্থান হিসাবে এটি পরিষ্কার করা যেতে পারে তবে বিকল্প 1 ফাইলের নামের শেষে একটি এলোমেলো সংখ্যা যুক্ত করবে ফাইলগুলি অনন্য রাখতে। এটি একটি ফাইল এক্সটেনশন যুক্ত করবে যা .tmp
ডিফল্টরূপে হয় তবে এটি ২ য় পরামিতি ব্যবহারের মাধ্যমে কোনও কিছুতে সেট করা যেতে পারে। এলোমেলো নম্বর ব্যবহারের অর্থ একটি ফাইলের নাম উল্লেখ করেও এটি প্রত্যয় / ফাইল এক্সটেনশন ( .tmp
ডিফল্টরূপে) এর সাথে নম্বর যুক্ত হওয়ার সাথে একই থাকে না যেমন আপনি নিজের ফাইলের internal_file
নামটি নির্দিষ্ট করেন এবং বেরিয়ে আসেন internal_file1456345.tmp
। যেখানে আপনি এক্সটেনশানটি নির্দিষ্ট করতে পারবেন আপনি সংযুক্ত নম্বরটি নির্দিষ্ট করতে পারবেন না। তবে এটির মাধ্যমে উত্পন্ন ফাইলের নামটি আপনি খুঁজে পেতে পারেনfile.getName();
, তবে আপনার এটি অন্য কোথাও সঞ্চয় করা দরকার যাতে আপনি যখনই ফাইলটি মুছতে বা পড়তে উদাহরণ হিসাবে চেয়েছিলেন এটি ব্যবহার করতে পারেন। সুতরাং এই কারণে আমি 2 য় বিকল্পটি পছন্দ করি কারণ আপনি যে ফাইল নামটি নির্দিষ্ট করেছেন তা হ'ল ফাইল নামটি তৈরি করা।
আপনি কনটেক্সট.বিটকচেডির () ব্যবহার করে ক্যাশে দির ব্যবহার করতে পারেন ।
File temp=File.createTempFile("prefix","suffix",context.getCacheDir());
আপনি File.deleteOnExit()
পদ্ধতিটি ব্যবহার করতে পারেন
https://developer.android.com/reference/java/io/File.html#deleteOnExit ()
এটি এখানে https://developer.android.com/references/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()