জাভাতে টেম্প ফাইল তৈরির নিরাপদ উপায় কী?


102

আমি জাভাতে একটি টেম্প ফাইল তৈরির একটি নিরাপদ উপায় সন্ধান করছি । নিরাপদে, আমি নিম্নলিখিতটি বোঝাতে চাইছি:

  • নামটি অনন্য হওয়া উচিত, এমনকি সম্ভাব্য জাতিগত অবস্থার মধ্যেও (যেমন অন্য থ্রেড একই সময়ে একই ফানকে কল করে, বা অন্য কোনও প্রক্রিয়া এই কোডটি একই সাথে চালায়)
  • ফাইলটি ব্যক্তিগত হওয়া উচিত, এমনকি সম্ভাব্য রেস শর্তের মধ্যেও (উদাহরণস্বরূপ অন্য ব্যবহারকারী উচ্চ হারে ফাইলটি chmod করার চেষ্টা করে)
  • আমি জেনেরিক ডিলিট না করে ফাইলটি মুছতে এবং ভুল ফাইলটি মোছার ঝুঁকি নিয়ে বলতে পারি
  • আদর্শভাবে, ফাইলটি মুছে ফেলা নিশ্চিত হওয়া উচিত, এমনকি সুযোগ পাওয়ার আগেই ব্যতিক্রম ছুঁড়ে দেওয়া উচিত
  • ফাইলটি বুদ্ধিমান স্থানে ডিফল্ট হওয়া উচিত (উদাহরণস্বরূপ JVM নির্দিষ্ট টেম্প dir, সিস্টেম টেম্প ডিয়ারকে ডিফল্ট করে)

4
ব্যবহার File f = File.createTempFile(prefix, extension)। এটি টেম্পার ডিয়ারে স্থাপন করা হবে। এবং f.deleteOnExit()এটি দিয়ে প্রস্থান করার সময় স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে।
— ব্যাকস্ল্যাশ

4
মুছুন অন প্রস্থান ফাইলটি মুছবে না, যদি ভিএম একটি ব্যতিক্রম সহ প্রস্থান করে।
— জোহানেস

উত্তর:


136

ব্যবহার File.createTempFile()।

File tempFile = File.createTempFile("prefix-", "-suffix");
//File tempFile = File.createTempFile("MyAppName-", ".tmp");
tempFile.deleteOnExit();

টেম্প ডিয়ারে একটি ফাইল তৈরি করবে, যেমন:

উপসর্গ-6340763779352094442-প্রত্যয়


4
শুধু এফওয়াইআই, আপনার কোনও অনন্য উপসর্গ / প্রত্যয় নিয়ে চিন্তা করার দরকার নেই, যেহেতু জাভা এর মধ্যে একটি সংখ্যার এলোমেলো স্ট্রিং তৈরি করবে।
— স্কোয়াজার

4
সুপার! tempFile.delete()এ ছাড়াও কোনও স্বাভাবিক সমস্যা আছে deleteOnExit(যেহেতু আমি প্রস্থান করার আগে টেম্প ফাইলগুলির কর্ণধার ঝুলতে চাই না)?
— এসআরবার্টজেমস

4
না, আপনি এটি যেভাবেই করতে পারেন।
— স্টিফান

4
@ এসরোবার্টজেমস: কোনও সমস্যা নেই। জিনিসটি হ'ল পূর্বাভাসযোগ্য নাম সহ টেম্পাইলগুলি তৈরি করা সুরক্ষা সমস্যাগুলি চাপিয়ে দেয়। একবার যথাযথ অনুমতি নিয়ে নিরাপদ উপায়ে তৈরি করা গেলে তারা তা করে না।
— মার্কাস ডাব্লু মাহলবার্গ

4
আমি এটি নিরাপদ হিসাবে বিবেচনা করব না, তৈরি করা ফাইলটি বিশ্ব-পঠনযোগ্য এবং এটি টিএমপি ডিরেক্টরিতে থাকে যা কোনও ব্যবহারকারীর কাছে অ্যাক্সেসযোগ্য হয়।
— পিটার গারবার

38

জাভা 7-তে নতুন ফাইল এপিআই "NIO2" রয়েছে যার মধ্যে temnp ফাইল এবং ডিরেক্টরি তৈরির জন্য নতুন পদ্ধতি রয়েছে। দেখা

যেমন

Path tempDir = Files.createTempDirectory("tempfiles");

বা

Path tempFile = Files.createTempFile("tempfiles", ".tmp");

4
আমি এনআইও পছন্দ করি, যার জন্য উপসর্গের দরকার নেই।
— ফ্র্যাঙ্কলিন ইউ

0
String tempfilePath = System.getProperty("java.io.tmpdir");
tempfilePath = tempfilePath.concat("filename.extension");

উপসর্গ প্রয়োজন হয় না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.