Temporary Directory — এটি কী, অস্থায়ী ফাইল এবং স্টোরেজ ব্যবস্থাপনা

লেখক: IT Sectr প্রকাশিত: 2026-07-10 পড়ার সময়: 10 মিনিট

Temporary Directory (tmp) হলো iOS অ্যাপ স্যান্ডবক্সের একটি ডিরেক্টরি যা অত্যন্ত স্বল্পমেয়াদী ডেটা সংরক্ষণের জন্য তৈরি, যা শুধুমাত্র অ্যাপের বর্তমান সেশনের প্রয়োজন। Apple File System Programming Guide (2024) অনুযায়ী, সিস্টেম প্রতিটি অ্যাপ সমাপ্তি বা ডিভাইস রিস্টার্টে tmp পরিষ্কার করতে পারে। Caches Directory-এর বিপরীতে, tmp-তে অস্থায়ী ফাইলগুলি লঞ্চের মধ্যে সংরক্ষিত থাকার জন্য নয় — ডেভেলপারকে ডিস্ক স্পেস নষ্ট না করতে ব্যবহারের পরে স্পষ্টভাবে সেগুলি মুছে ফেলতে হবে।

মূল পয়েন্ট

  • Temporary Directory — শুধুমাত্র বর্তমান অ্যাপ সেশনে প্রয়োজনীয় ডেটার জন্য ডিরেক্টরি।
  • iOS ডিভাইস রিস্টার্ট বা অ্যাপ সমাপ্তিতে tmp পরিষ্কার করতে পারে।
  • tmp-র ফাইলগুলি iCloud এবং iTunes ব্যাকআপে অন্তর্ভুক্ত নয়
  • tmp-র পথ Swift বা Objective-C-তে NSTemporaryDirectory()-এর মাধ্যমে পাওয়া যায়।
  • ডেভেলপারকে ব্যবহারের পরে tmp থেকে ফাইলগুলি ম্যানুয়ালি মুছে ফেলতে হবে।

iOS-এ Temporary Directory কী?

Temporary Directory (tmp নামেও পরিচিত) হলো iOS অ্যাপ স্যান্ডবক্সের ভিতরে একটি ডিরেক্টরি যা এমন ডেটা সংরক্ষণের জন্য ডিজাইন করা হয়েছে যার জীবনকাল বর্তমান সেশনের মধ্যে সীমাবদ্ধ। এটি সমস্ত স্যান্ডবক্স ডিরেক্টরির মধ্যে সবচেয়ে স্বল্পস্থায়ী স্টোরেজ।

iOS tmp প্রদান করে এমন অপারেশনের জন্য যাতে মধ্যবর্তী ফাইল স্টোরেজ প্রয়োজন: Documents-এ সরানোর আগে ফাইল ডাউনলোড করা, এক্সপোর্টের আগে অস্থায়ী কপি তৈরি করা, স্ট্রিমিং ডেটা বাফার করা। অপারেশন শেষ হওয়ার পরে, অস্থায়ী ফাইলগুলি মুছে ফেলা আবশ্যক।

Apple Developer Documentation (2024) অনুযায়ী, tmp ডিরেক্টরি অনন্য কারণ এর পথ অ্যাপ লঞ্চের মধ্যে পরিবর্তিত হতে পারে। iOS প্রতিটি লঞ্চে tmp-র জন্য একটি নতুন পথ তৈরি করে — এটি নিশ্চিত করে যে পূর্ববর্তী সেশনের ডেটা দুর্ঘটনাক্রমে পড়া না হয়। ডেভেলপারকে কখনই লঞ্চের মধ্যে tmp পথ সংরক্ষণ করা উচিত নয়।

গুরুত্বপূর্ণ: Caches Directory-এর বিপরীতে, যেখানে ডেটা একাধিক লঞ্চ টিকে থাকতে পারে, tmp দীর্ঘমেয়াদে সেশনের মধ্যে ডেটা ধরে রাখার গ্যারান্টি দেয় না। এটি সত্যিকার অর্থে অস্থায়ী ডেটা সংরক্ষণের সবচেয়ে নির্ভরযোগ্য উপায়।

Temporary Directory-র পথ কীভাবে পাবেন

Swift-এ, tmp-র পথ পেতে গ্লোবাল ফাংশন NSTemporaryDirectory() বা FileManager.temporaryDirectory ব্যবহার করা হয়। এগুলি সমস্ত স্যান্ডবক্স ডিরেক্টরির মধ্যে সবচেয়ে সহজ API।

swift
import Foundation

// Option 1: NSTemporaryDirectory()
let tempDir = NSTemporaryDirectory()
let tempFile = (tempDir as NSString)
    .appendingPathComponent("export_temp.pdf")

// Option 2: FileManager.temporaryDirectory (URL)
let tempURL = FileManager.default.temporaryDirectory
let exportURL = tempURL.appendingPathComponent("export_temp.pdf")

Objective-C একই গ্লোবাল ফাংশন NSTemporaryDirectory() ব্যবহার করে। ফলাফল অ্যাপের অস্থায়ী ডিরেক্টরির সম্পূর্ণ পথ সহ একটি স্ট্রিং।

objective-c
@import Foundation;

NSString *tempDir = NSTemporaryDirectory();
NSString *tempFile = [tempDir stringByAppendingPathComponent:@"temp_data.bin"];

অন্যান্য ডিরেক্টরি থেকে মূল পার্থক্য: NSTemporaryDirectory()-তে ডোমেন বা সার্চ মাস্ক নির্দিষ্ট করার প্রয়োজন নেই — এটি একটি গ্লোবাল ফাংশন। তবে, পরবর্তী লঞ্চে পথ পরিবর্তিত হতে পারে, তাই এটি কখনই UserDefaults বা অন্য কোনো স্থায়ী স্টোরেজে সংরক্ষণ করবেন না।

tmp-তে কী ডেটা সংরক্ষণ করবেন

Temporary Directory কঠোরভাবে নির্দিষ্ট পরিস্থিতির জন্য তৈরি। ডেভেলপাররা প্রায়ই tmp কে Caches ভেবে ভুল করেন, tmp-তে এমন ডেটা রাখেন যা এক সেশনের বেশি স্থায়ী হওয়া উচিত। আসুন সঠিক ব্যবহারের ক্ষেত্রগুলি দেখি।

এক্সপোর্টের সময় মধ্যবর্তী ফাইল

ফাইলগুলি যা ডেটা এক্সপোর্ট প্রক্রিয়ার সময় তৈরি হয়: ইমেলে পাঠানোর আগে রিপোর্টের অস্থায়ী কপি, আপলোডের আগে সংকুচিত আর্কাইভ, ফর্ম্যাট রূপান্তরের মধ্যবর্তী ফাইল। এক্সপোর্ট শেষ হওয়ার পরে, ফাইলটি মুছে ফেলা আবশ্যক।

স্ট্রিমিং ডেটা বাফারিং

অস্থায়ী বাফার অডিও, ভিডিও বা স্ট্রিমিং ডেটা রেকর্ড করার জন্য যা রিয়েল টাইমে প্রক্রিয়া করা হয়। উদাহরণস্বরূপ, স্থায়ী স্টোরেজে সংরক্ষণের আগে ভয়েস রেকর্ডিং, বা স্ট্রিমিংয়ের সময় ভিডিও স্ট্রিম বাফারিং।

পরিস্থিতিডিরেক্টরিযুক্তি
এক্সপোর্ট পাঠানোর আগে PDFtmpপাঠানোর পরে ফাইল প্রয়োজন নেই
ক্যাশ ছবিCachesসেশনের মধ্যে উপযোগী
ডাউনলোড সরানোর আগে ফাইলtmpমধ্যবর্তী স্টোরেজ
সেশন লগtmpশুধুমাত্র সেশনে প্রাসঙ্গিক
সম্পাদনা ডকুমেন্টtmpসংরক্ষণের আগে সংস্করণ

যদি ডেটা শুধুমাত্র এখন এবং এখানে প্রয়োজন — tmp ব্যবহার করুন। যদি এটি পরবর্তী সেশনে কাজে লাগতে পারে — Caches ব্যবহার করুন। যদি ডেটা হারানো অগ্রহণযোগ্য — Documents ব্যবহার করুন।

অস্থায়ী ফাইলগুলির জীবনচক্র

iOS tmp-র জীবনচক্র অন্যান্য স্যান্ডবক্স ডিরেক্টরি থেকে ভিন্নভাবে পরিচালনা করে। এই চক্র বোঝা অ্যাপে সঠিক ফাইল স্টোরেজ ডিজাইন করার জন্য অত্যন্ত গুরুত্বপূর্ণ।

প্রতিটি লঞ্চে, iOS tmp-র জন্য একটি নতুন পথ বরাদ্দ করতে পারে। পূর্ববর্তী পথ অ্যাক্সেসযোগ্য থাকে না, যদিও ভৌত ফাইলগুলি ডিভাইস রিস্টার্ট না হওয়া পর্যন্ত ডিস্কে থাকতে পারে। এই কারণেই Apple সেশনের মধ্যে tmp পথ সংরক্ষণ না করার জোরালো সুপারিশ করে।

Apple Tech Note TN2150 (2024) অনুযায়ী, সিস্টেম নিম্নলিখিত ক্ষেত্রে tmp পরিষ্কার করতে পারে: ডিভাইস রিস্টার্ট, ডিস্ক স্পেস সীমা পৌঁছানো, অ্যাপ অফলোড (Offload)। Caches-এর বিপরীতে, tmp একাধিক লঞ্চের মধ্যেও ডেটা সংরক্ষণের জন্য নয় — এটি স্যান্ডবক্সের সবচেয়ে কম নির্ভরযোগ্য স্টোরেজ।

ডেভেলপারকে FileManager.removeItem(at:) ব্যবহার করে অপারেশন শেষ করার পরে স্পষ্টভাবে অস্থায়ী ফাইলগুলি মুছে ফেলতে হবে। tmp-তে না মুছে ফেলা ফাইলগুলি জমা হয় এবং ডিস্ক স্পেস নষ্ট করে — iOS নিকট ভবিষ্যতে তাদের স্বয়ংক্রিয় পরিষ্কারের গ্যারান্টি দেয় না।

Temporary Directory বনাম Caches Directory

tmp এবং Caches-এর তুলনা ডেভেলপারদের স্টোরেজের জন্য ডিরেক্টরি নির্বাচনের সময় সঠিক সিদ্ধান্ত নিতে সাহায্য করে। ভুল নির্বাচন হয় অকাল ডেটা হারানো বা অপ্রয়োজনীয় স্থান খরচের কারণ হতে পারে।

প্যারামিটারTemporary DirectoryCaches Directory
জীবনকালশুধুমাত্র বর্তমান সেশনসেশনের মধ্যে (কোনো গ্যারান্টি নেই)
পথ পরিবর্তনপ্রত্যেক লঞ্চে পরিবর্তিত হতে পারেস্থিতিশীল পথ
স্বয়ংক্রিয় পরিষ্কাররিবুটে, অফলোডেস্থান কম হলে
ডেভেলপার মুছে ফেলাঅপারেশনের পরে বাধ্যতামূলকসীমা অতিক্রম করলে প্রস্তাবিত
ব্যবহারমধ্যবর্তী অপারেশনস্থায়ী ক্যাশ

একটি ব্যবহারিক নিয়ম: tmp বেছে নিন সেই ডেটার জন্য যা তৈরির সেকেন্ড বা মিনিটের মধ্যে মুছে ফেলা হবে। Caches বেছে নিন সেই ডেটার জন্য যা সেশনের মধ্যে ঘন্টা বা দিন ধরে রাখা উপযোগী কিন্তু পুনরায় তৈরি করা যেতে পারে।

tmp-র সাথে কাজ করার সেরা অনুশীলন

Temporary Directory-র সাথে কাজ করতে শৃঙ্খলা প্রয়োজন: যেহেতু tmp-তে ডেটা স্বল্পস্থায়ী এবং এর জমা হওয়া স্থান নষ্ট করতে পারে, ডেভেলপারদের বেশ কয়েকটি মূল অনুশীলন অনুসরণ করা উচিত।

ব্যবহারের পরে সর্বদা ফাইল মুছে ফেলুন

FileManager.removeItem(at:) একটি অস্থায়ী ফাইলের সাথে অপারেশন শেষ করার সাথে সাথেই কল করা উচিত। ত্রুটি হলেও মুছে ফেলার নিশ্চয়তা দিতে Swift-এ defer ব্যবহার করুন।

swift
import Foundation

let tempURL = FileManager.default
    .temporaryDirectory
    .appendingPathComponent("upload_temp.dat")

defer {
    try? FileManager.default.removeItem(at: tempURL)
}

// Work with temp file
try "temporary data".write(to: tempURL, atomically: true)
// ... file operation ...
// defer executes when scope exits

দীর্ঘস্থায়ী ডেটার জন্য tmp ব্যবহার করবেন না

যদি ডেটা তৈরির এক ঘন্টা পরেও প্রয়োজন হতে পারে — এটি Caches বা Application Support-এ সংরক্ষণ করুন। tmp মিনিটের অপারেশনের জন্য, স্টোরেজের জন্য নয়।

এই নিয়মগুলি অনুসরণ নিশ্চিত করে যে অস্থায়ী ফাইলগুলি জমা না হয়, ডিস্ক স্পেস কার্যকরভাবে ব্যবহার হয় এবং অ্যাপ iOS ফাইল সিস্টেম পরিষ্কারের যেকোনো পরিস্থিতি সঠিকভাবে পরিচালনা করে।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

অ্যাপ চলাকালীন Temporary Directory-র পথ পরিবর্তিত হতে পারে?

সাধারণত একটি সেশনের মধ্যে পথ পরিবর্তিত হয় না, কিন্তু iOS এটি গ্যারান্টি দেয় না। বিরল ক্ষেত্রে, সিস্টেম tmp পরিবর্তন করতে পারে যখন অ্যাপ ব্যাকগ্রাউন্ড থেকে ফোরগ্রাউন্ডে আসে। এই কারণে Apple একটি ভেরিয়েবলে সংরক্ষণ করার পরিবর্তে প্রতিবার পথ প্রয়োজন হলে NSTemporaryDirectory() কল করার সুপারিশ করে।

আমি যদি tmp থেকে ফাইল না মুছে ফেলি তাহলে কী হবে?

ফাইলগুলি জমা হবে এবং ডিস্ক স্পেস নেবে। iOS ডিভাইস রিস্টার্টে tmp পরিষ্কার করতে পারে, কিন্তু ততক্ষণ পর্যন্ত অ্যাপ ডিস্ক স্পেস নষ্ট করবে। উল্লেখযোগ্য জমা হলে, ব্যবহারকারী স্টোরেজ সেটিংসে দেখতে পারেন যে অ্যাপ অনেক স্পেস নিচ্ছে।

অস্থায়ী ডেটা এনক্রিপ্ট করার জন্য tmp উপযুক্ত?

হ্যাঁ, আপনি সংবেদনশীল ডেটা সম্বলিত অস্থায়ী ফাইলগুলির জন্য NSFileProtectionComplete-সহ DataProtectionType ব্যবহার করতে পারেন। তবে মনে রাখবেন: যদি ফাইলটি শুধুমাত্র বর্তমান সেশনে পড়া হবে এবং তারপর মুছে ফেলা হবে, তাহলে এনক্রিপশন অপ্রয়োজনীয় হতে পারে। ডেটার ধরণের ভিত্তিতে এনক্রিপশনের প্রয়োজনীয়তা মূল্যায়ন করুন।

সংঘর্ষ ছাড়া tmp-তে কীভাবে অনন্য ফাইল নাম তৈরি করবেন?

একটি অনন্য আইডেন্টিফায়ার তৈরি করতে ProcessInfo.processInfo.globallyUniqueString বা UUID().uuidString ব্যবহার করুন। FileManager urlForCreatingTemporaryFile পদ্ধতিও প্রদান করে, যা tmp-তে স্বয়ংক্রিয়ভাবে একটি অনন্য নাম তৈরি করে। এটি সমান্তরাল লেখার সময় সংঘর্ষের অনুপস্থিতি নিশ্চিত করে।

tmp-র আকার কি App Store পর্যালোচনাকে প্রভাবিত করে?

পরোক্ষভাবে — হ্যাঁ। Apple ডিস্কে অ্যাপের মোট ডেটার পরিমাণের দিকে নজর দেয়। যদি tmp-তে অপসারণ না করা গিগাবাইট ফাইল থাকে, পর্যালোচক অ্যাপ প্রত্যাখ্যান করতে পারে। tmp-র জন্য প্রস্তাবিত সীমা যেকোনো সময় 100 MB-এর বেশি নয়। নিয়মিত tmp পরিষ্কার করুন এবং FileManager-এর মাধ্যমে এর আকার পরীক্ষা করুন।

সারসংক্ষেপ

  • Temporary Directory (tmp) — এমন ডেটার জন্য ডিরেক্টরি যার জীবনকাল বর্তমান অ্যাপ সেশনের মধ্যে সীমাবদ্ধ।
  • tmp-র পথ লঞ্চের মধ্যে পরিবর্তিত হতে পারে — স্থায়ী স্টোরেজে সংরক্ষণ করবেন না।
  • সিস্টেম ডিভাইস রিস্টার্ট বা অ্যাপ অফলোডে tmp পরিষ্কার করতে পারে।
  • tmp-র ফাইলগুলি iCloud এবং iTunes ব্যাকআপে অন্তর্ভুক্ত নয়
  • Caches Directory-র বিপরীতে, tmp সেশনের মধ্যে স্টোরেজের জন্য নয়।
  • ডেভেলপারকে FileManager.removeItem ব্যবহার করে অস্থায়ী ফাইলগুলি স্পষ্টভাবে মুছে ফেলতে হবে।
  • Swift-এ defer ব্যবহার করুন অপারেশনের ফলাফল নির্বিশেষে অস্থায়ী ফাইল মুছে ফেলার নিশ্চয়তা দিতে।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন