কোনও নতুন ফাইলে লেখার সময় স্বয়ংক্রিয়ভাবে পুরো পথ তৈরি করুন


246

আমি একটি নতুন ফাইল লিখতে চাই FileWriter। আমি এটি এর মতো ব্যবহার করি:

FileWriter newJsp = new FileWriter("C:\\user\Desktop\dir1\dir2\filename.txt");

এখন dir1এবং dir2বর্তমানে বিদ্যমান নেই। আমি চাই জাভা সেগুলি ইতিমধ্যে না থাকলে সেগুলি স্বয়ংক্রিয়ভাবে তৈরি করে to আসলে জাভা ইতিমধ্যে বিদ্যমান না থাকলে পুরো ফাইল পাথ সেট আপ করা উচিত।

আমি কীভাবে এটি অর্জন করতে পারি?

উত্তর:


431

কিছুটা এইরকম:

File file = new File("C:\\user\\Desktop\\dir1\\dir2\\filename.txt");
file.getParentFile().mkdirs();
FileWriter writer = new FileWriter(file);

11
কেন প্যারিফায়ার এবং কেবল এমকিডিয়ার্স নয়?
সাউপারল

আমি কি পূর্ববর্তী ফোল্ডারটিকে ওভাররাইড করব, যদি আমি একই ভাইকে আলাদা আলাদা ফাইলের সাথে পুনরায় পাঠাচ্ছি?
surajs1n

1
@ surajs1n: ডিরেক্টরিটি ইতিমধ্যে উপস্থিত থাকলে mkdirsকিছুই করবে না।
জন স্কিটি

3
@ সাউপারেল: যদি ফাইলটি এখনও বিদ্যমান না থাকে, mkdirs () নির্দিষ্ট করে দেওয়া সমস্ত কিছু ডিরেক্টরি হিসাবে ধরে নেবে এবং এটিকে তৈরি করে (কেবল এটি পরীক্ষিত)। GetPenderFile () ব্যবহার করে আপনি নিজেই ফাইলটির রচনা ফাইল রাইটারে রেখে দেন
h4nek

149

জাভা 1.7 যেহেতু আপনি ফাইলস.ক্রিয়েট ফাইল ব্যবহার করতে পারেন:

Path pathToFile = Paths.get("/home/joe/foo/bar/myFile.txt");
Files.createDirectories(pathToFile.getParent());
Files.createFile(pathToFile);

4
মনে রাখা গুরুত্বপূর্ণ যে আপেক্ষিক পাথগুলি নাল পয়েন্টার ব্যতিক্রম হতে পারে। Path pathToFile = Paths.get("myFile.txt"); Files.createDirectories(pathToFile.getParent());
ম্যাগ

যদি (! ফাইল.এক্সিস্টস (pathToFile.getParent ())) ফাইলস.ক্রিয়েট ডিরেক্টরী (pathToFile.getParent ()); // পরীক্ষা যদি দির ইতিমধ্যে ত্রুটি এড়ানোর জন্য উপস্থিত থাকে
আন্দ্রে নেল

29

ব্যবহার File.mkdirs():

File dir = new File("C:\\user\\Desktop\\dir1\\dir2");
dir.mkdirs();
File file = new File(dir, "filename.txt");
FileWriter newJsp = new FileWriter(file);

16

ব্যবহার File.mkdirs()


1
এটি একটি ডিরেক্টরি তৈরি করবে `সি: \\ ব্যবহারকারী \ ডেস্কটপ \ dir1 \ dir2 \ filename.txt``
মার্টিন শ্র্রেডার

@ মার্টিনশ্রেডার: আপনি যদি ফাইলের নাম উপাদান রাখেন তবেই।
মার্সেলো ক্যান্টোস

4

এই সমস্ত মাথাব্যাথা হ্যান্ডেল করতে ফাইলUtils ব্যবহার করুন ।

সম্পাদনা করুন: উদাহরণস্বরূপ, কোনও ফাইলে লেখার জন্য নীচের কোডটি ব্যবহার করুন, এই পদ্ধতিটি 'প্যারেন্ট ডিরেক্টরিটি উপস্থিত না থাকলে চেকিং এবং তৈরি করবে'।

openOutputStream(File file [, boolean append]) 

1
দয়া করে, আপনি আরও নির্দিষ্ট হতে পারে?
জিন

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

1
আমি সম্মতি দিচ্ছি ফাইলUtils একটি ভাল উপায়, তবে আমি মনে করি এর থেকে সহজতর উপায়টি ওপেনআউটপুট স্ট্রিম নয়, রাইটিংস্ট্রিংটোফিল ব্যবহার করে। উদাহরণস্বরূপ ফাইল ফাইল = নতুন ফাইল ("সি: / ইউজার / ডেস্কটপ / ডায়ার 1/dir2/filename.txt"); ফাইলUtils.writeStringToFile (ফাইল, "foo বার বাজ", সত্য);
পল

তার জন্য ধন্যবাদ . আমার কোডটি এখন আরও পরিষ্কার করুন। সাম্প্রতিক জাভাডকের লিঙ্ক: commons.apache.org/proper/commons-io/javadocs/api-2.5/org/…
নিখিল সাহু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.