ফাইল.সিপারেটর বনাম ফাইলসিস্টেম.জেটসেপারেটর () বনাম System.getProperty ("file.separator")?


136

প্ল্যাটফর্ম নির্ভর "ফাইল বিভাজক" প্ল্যাটফর্মটি স্বাধীনভাবে পাওয়ার জন্য তিনটি অভিন্ন উপায় রয়েছে বলে মনে হচ্ছে :

কখন কী ব্যবহার করবেন তা আমরা কীভাবে সিদ্ধান্ত নেব?

তাদের মধ্যে কি কোনও পার্থক্য আছে?


আপনি কি এখানে প্ল্যাটফর্ম নির্ভর নির্ভর ফাইল বিভাজকটি পাচ্ছেন না? কেবল একটি প্ল্যাটফর্ম-স্বতন্ত্র ম্যানারে।
স্টিনিবোট

@ স্টিইনি, হ্যাঁ, আপডেট হয়েছে।
পেসারিয়ার

একটি সাধারণ জাভা প্রশ্নের কমপক্ষে 3 বা ততোধিক উত্তর রয়েছে
স্টিম্পসন ক্যাট

উত্তর:


142

System.getProperties()System.setProperty(String key, String value)কমান্ড লাইন প্যারামিটারগুলিতে বা তার মাধ্যমে ওভাররাইড করা যেতে পারে-Dfile.separator=/

File.separator ডিফল্ট ফাইল সিস্টেমের জন্য পৃথককারী পায়।

FileSystems.getDefault() আপনাকে ডিফল্ট ফাইল সিস্টেম দেয়।

FileSystem.getSeparator()আপনি ফাইল সিস্টেমের জন্য পৃথককারী চরিত্র পাবেন। নোট করুন যে একটি উদাহরণ পদ্ধতি হিসাবে আপনি ডিফল্ট ব্যতীত আপনার কোডে বিভিন্ন ফাইল সিস্টেমগুলি পাস করার জন্য এটি ব্যবহার করতে পারেন, এমন ক্ষেত্রে যেখানে আপনার কোনও কোডটি একটি জেভিএমের একাধিক ফাইল সিস্টেমের মধ্যে পরিচালনা করার জন্য আপনার কোডের প্রয়োজন।


2
শীতল = ডি বিটিডব্লু আপনি "একাধিক ফাইল সিস্টেম অপারেটিং" এর অংশে বিস্তারিত বলতে পারবেন?
পেসারিয়ার

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

আমার ব্যবহারিকভাবে এটি দরকারী, যেমন বলুন যে কারও কাছে একটি উইন্ডোজ এবং একটি ইউএনআইএক্সের 2 টি পার্টিশন ছিল এবং তিনি আমার অ্যাপটি চালাচ্ছেন (তার উইন্ডোজ বিভাজনে), ক্লাসটি কি তার ইউনিক্স ফাইল-সিস্টেম অ্যাক্সেস করতে সক্ষম ? (আমি সত্যিই এটি পরীক্ষা করতে পারিনি কারণ আমার কাছে আর একটি
ফাইল সিস্টেম

1
আমার সন্দেহ হয় যে উইন্ডোজের ফাইলসিস্টেমগুলির জন্য বেশিরভাগ ড্রাইভাররা 'উইন্ডোজ-স্টাইল' ফাইল সিস্টেম API এ অনুবাদ করেন যাতে এটি ওএস এবং বহনযোগ্য অ্যাপ্লিকেশনগুলিকে কাজ করতে দেয়। ব্যবহারিক ব্যবহারটি এমন কোনও ওএসের জন্য হতে হবে যা উইন্ডোজের মতো একটি নির্দিষ্ট দৃষ্টান্ত ছাড়াই অদ্ভুত এবং দুর্দান্ত ফাইল সিস্টেমগুলিকে সমর্থন করে।
ব্রিংগার 128

ওহ, এবং আপনার অন্যান্য প্রশ্নের উত্তর দেওয়ার জন্য - আপনি যে FileSystemফাইল ফাইলটি মোকাবেলা করেছেন তার জন্য আপনার আলাদা উদাহরণ থাকবে ।
ব্রিংগার 128

31

যদি আপনার কোড ফাইল সিস্টেমের সীমানা অতিক্রম না করে, যেমন আপনি কেবল একটি ফাইল সিস্টেমের সাথে কাজ করছেন, তবে ব্যবহার করুন java.io.File.separator

এটি, যেমন ব্যাখ্যা করা হয়েছে, আপনাকে আপনার এফএসের জন্য ডিফল্ট বিভাজক পাবেন। যেমন ব্রিংগার 128 ব্যাখ্যা করেছে,System.getProperty("file.separator") কমান্ড লাইন বিকল্পের মাধ্যমে ওভাররাইড করা যেতে পারে এবং তেমন নিরাপদ নয় java.io.File.separator

শেষটা, java.nio.file.FileSystems.getDefault().getSeparator(); জাভা in তে প্রবর্তিত হয়েছিল, তাই আপনি যদি পুরানো জাভা সংস্করণগুলিতে আপনার কোডটিকে পোর্টেবল করতে চান তবে আপনি এখনই এটিকে উপেক্ষা করতে পারেন।

সুতরাং, এই বিকল্পগুলির প্রত্যেকটি প্রায় অন্যদের মতো একই, তবে বেশ নয়। আপনার প্রয়োজন অনুসারে এমন একটি চয়ন করুন।


হয় java.ioপক্ষে অবচিত java.nio?
পেসারিয়ার

13
@ পেসারিয়র: না, এটি অবহেলা করা হয়নি। java.ioএর তুলনায় কিছুটা নিচু স্তর java.nio, তবে এখনও খুব এবং ব্যাপকভাবে কার্যকর। আপনি এখানে পার্থক্যগুলি দেখতে পাবেন: ব্লগস.অরাকল . com / এসএলসি / এন্ট্রি / জাভানিও_ভিএস_জ্যাওয়াইওnioপ্রতিস্থাপন করে না io, এটি একাধিক উপায়ে প্রসারিত করে (এবং ioহুডের নীচে ব্যবহার করে)।
darioo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.