জাভা in-তে নতুন অ্যাপ্লিকেশনগুলির জন্য, কোনও java.io.Fileঅবজেক্টটি আর ব্যবহার করার কোনও কারণ আছে বা আমরা এটিকে অবনমিত হিসাবে বিবেচনা করতে পারি?
আমি বিশ্বাস করি একটি যা java.nio.file.Pathকরতে পারে সবকিছু java.io.Fileকরতে পারে এবং আরও অনেক কিছু।
জাভা in-তে নতুন অ্যাপ্লিকেশনগুলির জন্য, কোনও java.io.Fileঅবজেক্টটি আর ব্যবহার করার কোনও কারণ আছে বা আমরা এটিকে অবনমিত হিসাবে বিবেচনা করতে পারি?
আমি বিশ্বাস করি একটি যা java.nio.file.Pathকরতে পারে সবকিছু java.io.Fileকরতে পারে এবং আরও অনেক কিছু।
উত্তর:
দীর্ঘ সংক্ষিপ্ত বিবরণ:
java.io.Fileসম্ভবত কখনও অবহেলিত / অসমর্থিত হবে না । এটি বলেছিল, java.nio.file.Pathআরও আধুনিক java.nio.fileলিবিবের একটি অংশ এবং এটি সব কিছু java.io.Fileকরতে পারে তবে সাধারণত আরও ভাল উপায়ে এবং আরও অনেক কিছু।
নতুন প্রকল্পের জন্য, ব্যবহার করুন Path।
এবং যদি Fileউত্তরাধিকারের জন্য আপনার যদি কখনও কোনও অবজেক্টের প্রয়োজন হয় তবে কেবল # টু ফাইল () ফাইলকে পাথ কল করুন
ফাইল থেকে পাথে স্থানান্তরিত হচ্ছে
জেনিস জে হেইস এবং শ্যারন জাখৌরের নিবন্ধ, মে ২০০৯, জেডিকে N এ এনআইও ২.২ ফাইল সিস্টেম নিয়ে আলোচনা
Fileপরিবর্তে Path?
Path"বাচ্চাদের যুক্ত করতে" resolve(...)বা "এক স্তরের উপরে সরানো" getParent()ইত্যাদির সাহায্যে আরও সহজে সংশোধন করা যায় , যেখানে Fileপারে না। মূলত একবার আপনি পাথটি সংশোধন শেষ করার পরে, আপনি প্রায়শই এটিকে রূপান্তর করেন toFile()যাতে এটি কোনও FileInputStreamনির্মাণকারীর মতো উত্তরাধিকার পদ্ধতিতে প্রেরণ করা যায় ।
আমরা কি এটি অবচয় বিবেচনা করতে পারি?
না, যতক্ষণ না জাভাদোকে এটি চিহ্নিত না করা হয় আপনি এটিকে অবনমিত হিসাবে বিবেচনা করতে পারবেন নাFile ।
java.io.Fileএখনও তা সরানো হয়নি এমনকি অবমূল্যায়নও করা হয়নি, এবং জাভাদোকের মধ্যে এখনও কিছু নেই যা এই প্রস্তাব দেয় যে কোনওটি ঘটবে।
আরও তথ্যের সম্পর্কে এই নিবন্ধটি দেখুন - http://www.oracle.com/technetwork/articles/javase/nio-139333.html
মূলত ফাইল.পথ এখন থেকে যাওয়ার উপায় হবে তবে বহুলাংশে পরিচিত জাভা লোকেরা ব্যাক-সামঞ্জস্য রাখার ঝোঁক রাখে তাই আমি অনুমান করি যে এ কারণেই তারা এটি ছেড়ে দিয়েছে।
আমি খুব ভাল উত্তর সম্পূর্ণ করব @mmcrae।
java.io.File অবজেক্টটি ব্যবহার করার কি কোনও কারণ আছে বা আমরা এটিকে অবনমিত বিবেচনা করতে পারি?
জেডিকে ক্লাসগুলি খুব কমই হ্রাস করা হয়।
আপনি জেডিকে 8 এপিআই- এর প্রথম জেডিকে থেকে অবহেলিত সমস্ত শ্রেণীর তালিকাতে দেখতে পাচ্ছেন ।
এটিতে ক্লাসের সামান্য অংশ রয়েছে যা ওরাকল ডকুমেন্টেশন এবং জাভা সম্প্রদায় ব্যবহার করতে নিরুৎসাহিত করে।
java.util.Date, java.util.Vector, java.util.Hashtable... সঙ্গে এত অপূর্ণতা অবচিত নেই শ্রেণীর রয়েছে।
কিন্তু কেন ?
কারণ ধারণাগতভাবে কিছু deprecatedউপায় এখনও রয়েছে তবে এটি ব্যবহার করতে নিরুৎসাহিত করা কারণ এটি অবশ্যই মুছে ফেলা হবে।
হাজার হাজার প্রোগ্রাম এই খারাপ ডিজাইন করা ক্লাসগুলির উপর নির্ভর করে।
এই জাতীয় ক্লাসগুলির জন্য, জাভা এপিআই বিকাশকারীরা এ জাতীয় সংকেত দেবেন না।
উত্তর @EJPসত্যিই সঠিক:
যতক্ষণ না জাভাদোকে এটি চিহ্নিত থাকে until
সুতরাং, আমি মনে করি যে আপনার প্রশ্নটি এর পদগুলিতে আরও অর্থবোধ করবে:
"আমাদের পছন্দ অনুসারে, আমাদের কী ব্যবহার করা উচিত java.io.Fileবা java.nio.file.Pathনতুন উন্নয়নের জন্য এবং যদি উত্তর হয় java.nio.file.Path, আপনি কি সহজেই java.io.Fileউত্তরাধিকার প্রকল্পগুলি ব্যবহার করে সুবিধা নিতে পারবেন java.io.File?"
আমি বিশ্বাস করি একটি java.nio.file.Path java.io.File এবং আরও অনেক কিছু করতে পারে everything
আপনার কাছে উত্তর আছে।
উত্তরাধিকার আইও সম্পর্কে এই ওরাকল টিউটোরিয়ালটি আপনার চিন্তাকে নিশ্চিত করে।
জাভা এসই 7 রিলিজের আগে,
java.io.Fileক্লাসটি I / O ফাইলের জন্য ব্যবহৃত মেকানিজম ছিল, তবে এতে বেশ কিছু ত্রুটি ছিল।অনেকগুলি পদ্ধতি ব্যর্থ হওয়ার পরে ব্যতিক্রম ছুঁড়ে দেয়নি, সুতরাং কার্যকর ত্রুটির বার্তাটি পাওয়া অসম্ভব ছিল। উদাহরণস্বরূপ, যদি কোনও ফাইল মোছা ব্যর্থ হয় তবে প্রোগ্রামটি একটি "মোছা ব্যর্থ" প্রাপ্ত করবে তবে এটি জানত না কারণ এটি ফাইলটির অস্তিত্ব ছিল না, ব্যবহারকারীর অনুমতি নেই বা অন্য কোনও সমস্যা ছিল।
পুনর্নামকরণের পদ্ধতিটি প্ল্যাটফর্মগুলির জুড়ে ধারাবাহিকভাবে কাজ করে না। প্রতীকী লিঙ্কগুলির জন্য সত্যিকারের সমর্থন ছিল না।
মেটাডেটার জন্য আরও সমর্থন পছন্দ হয়েছিল যেমন ফাইল অনুমতি, ফাইলের মালিক এবং অন্যান্য সুরক্ষা বৈশিষ্ট্য।
ফাইল মেটাডেটা অ্যাক্সেস অকার্যকর ছিল।
অনেক ফাইল পদ্ধতি স্কেল করেনি। একটি সার্ভারের উপরে একটি বৃহত্তর ডিরেক্টরি তালিকার অনুরোধের ফলে হ্যাং হতে পারে। বড় ডিরেক্টরিগুলি মেমরি রিসোর্সের সমস্যাও সৃষ্টি করতে পারে, যার ফলে পরিষেবাটি অস্বীকার করা যায়।
নির্ভরযোগ্য কোড লেখা সম্ভব ছিল না যা বৃত্তাকার প্রতীকী লিঙ্কগুলি থাকলে পুনরাবৃত্তভাবে একটি ফাইল ট্রি হাঁটতে এবং যথাযথ প্রতিক্রিয়া জানাতে পারে।
এতগুলি ত্রুটিগুলির সাথে java.io.File, আমাদের নতুন বিকাশের জন্য এই শ্রেণিটি ব্যবহার করার সত্যিই কোনও কারণ প্রয়োজন নেই।
এমনকি লিগ্যাসি কোড ব্যবহারের জন্যও java.io.Fileওরাকল ব্যবহারের জন্য ইঙ্গিত দেয় Path।
সম্ভবত আপনার কাছে লিগ্যাসি কোড রয়েছে যা java.io.File ব্যবহার করে এবং আপনার কোডটিতে নূন্যতম প্রভাব সহ java.nio.file.Path কার্যকারিতাটি গ্রহণ করতে চান।
Java.io.File ক্লাসটি toPath পদ্ধতি সরবরাহ করে, যা একটি পুরানো শৈলীর ফাইল উদাহরণটিকে java.nio.file.Path দৃষ্টান্তে রূপান্তর করে:
Path input = file.toPath();
এরপরে আপনি পাঠ ক্লাসে উপলব্ধ সমৃদ্ধ বৈশিষ্ট্য সেটটির সুবিধা নিতে পারেন।
উদাহরণস্বরূপ, ধরুন আপনার কাছে এমন কিছু কোড রয়েছে যা একটি ফাইল মুছে ফেলেছে:
file.delete();
ফাইলস.ডিলেট পদ্ধতিটি ব্যবহার করতে আপনি এই কোডটি পরিবর্তন করতে পারেন, নিম্নরূপ:
Path fp = file.toPath();
Files.delete(fp);
হ্যাঁ, তবে জাভা's এর নিজস্ব স্ট্যান্ডার্ড এপিআই সহ অনেকগুলি বিদ্যমান এপিআই এখনও কেবল Fileপ্রকারের সাথে কাজ করে ।
জাভা.ও.ফাইলে হ্রাস করা হয় না। হ্যাঁ java.nio.file.Path আরও ভাল, তবে যতক্ষণ পর্যন্ত জাভা.আইও.ফায়াল ব্যবহার করে প্রচুর প্রোগ্রাম এবং পাঠ্য বই রয়েছে, কেবলমাত্র উত্তরাধিকারগত কারণে যদি এটি অবহেলিত বিবেচনা করা না হয় তবে এটি অত্যন্ত গুরুত্বপূর্ণ। এটি করা হ'ল কেবল কোনও লাভের জন্য কাজগুলিতে একটি স্প্যানার নিক্ষেপ করা। উদাহরণস্বরূপ অ্যান্ড্রয়েড ফ্রেমওয়ার্কটি তার কয়েকটি বেসিক ফাইল হ্যান্ডলিং বৈশিষ্ট্যগুলির জন্য ফাইল ব্যবহার করে, অন্যান্য অনেকগুলি কাজ।
Pathআরও ভাল কিনা । তিনি জিজ্ঞাসা করলেন Fileঅবনতি হয়েছে কিনা ।
জাভা in-তে নতুন অ্যাপ্লিকেশনগুলির জন্য, জাভা.ইও.ফাইয়েল অবজেক্টটি ব্যবহার করার কোনও কারণ আছে কি আমরা এটিকে অবচয় বলে বিবেচনা করতে পারি?
এটি কিছুটা বলার মতো: "নেপোলিয়ন কি রাশিয়া আক্রমণ করবে, নাকি এই ব্রাসেলস স্প্রাউটগুলি আসলেই সুস্বাদু?"
প্রশ্নের দ্বিতীয় অংশ হিসাবে, আপনি সত্যই এটিকে অবমূল্যায়িত বিবেচনা করতে পারেন। 2018 এর জানুয়ারী হিসাবে, এটি অবচয় করা হয়নি। তবে আপনাকে এটি বিবেচনা করে থামার কিছু নেই । এটি আপনার জীবনে কোনও লাভ অর্জন করবে বা পরেরটি বলা অসম্ভব।
FileI আমি, হ্যাঁ বা না"?
File। এটি খুব শীঘ্রই আর মারা যাবে না।
it isn't deprecated. But there's nothing to stop you *considering* it soহাঃ হাঃ হাঃ.