জাভা রিসোর্স কিভাবে iOS রিসোর্সে ম্যাপ করে

জাভা সম্পদ কি

জাভা রিসোর্স হল ডেটা ফাইল যা জাভা অ্যাপ্লিকেশন এবং লাইব্রেরির সাথে প্যাকেজ করা হয়। এই সম্পদগুলি রানটাইমে হয় Class.getResource(String name) লোড হয়, যা একটি java.net.URL , অথবা Class.getResourceAsStream(String name) প্রদান করে, যা একটি java.io.InputStream প্রদান করে। getResourceAsStream() পদ্ধতিটি সাধারণত ব্যবহার করা হয় যখন একটি সংস্থান উপলব্ধ হওয়ার আশা করা হয়, যেহেতু এটি না থাকলে এটি একটি IOException নিক্ষেপ করে। যদি রিসোর্সটি উপস্থিত না থাকে তবে getResource() পদ্ধতিটি নাল রিটার্ন করে, তাই ঐচ্ছিক সম্পদের জন্য পরীক্ষা করা দরকারী।

সম্পদের নাম এবং পথ

J2ObjC রিসোর্সের আপেক্ষিক বা পরম পথ ব্যবহার করে অ্যাপ্লিকেশনের প্রধান বান্ডিল ( [NSBundle mainBundle] ) দেখে সংস্থানগুলি সনাক্ত করে:

আপেক্ষিক পথ

রিসোর্স পাথ নির্দিষ্ট করার পছন্দের পদ্ধতি হল আপেক্ষিক পাথ ব্যবহার করে। আপেক্ষিক পাথ ফরওয়ার্ড স্ল্যাশ ('/') দিয়ে শুরু হয় না। আপেক্ষিক পাথের সাথে রিসোর্স পড়ার সময়, ক্লাসের প্যাকেজ নাম পরিবর্তন করা হয়, প্যাকেজের নামের মধ্যে পিরিয়ড ('.') পরিবর্তন করে ফরওয়ার্ড স্ল্যাশ ('/'), তারপর Class.getResource(String name) এ নির্দিষ্ট আপেক্ষিক পাথ Class.getResource(String name) বা Class.getResourceAsStream(String name) পদ্ধতি কল প্যাকেজ পাথে সংযুক্ত করা হয়।

উদাহরণস্বরূপ, যদি একটি অ্যাপে একটি foo.bar.Mumble ক্লাস থাকে, তাহলে সেই প্যাকেজের ক্লাসের সাপেক্ষে সমস্ত রিসোর্সের বেস পাথ হল /foo/bar । যখন Mumble.class.getResource("oops/error.jpg") চালু করা হয়, oops/error.jpg প্যাকেজের পাথে যুক্ত হয়, তাই এর সম্পূর্ণ রিসোর্স পাথ হল /foo/bar/oops/error.jpg

পরম পথ

ফরোয়ার্ড স্ল্যাশ ('/') দিয়ে রিসোর্সের নাম শুরু করে একটি পরম পথ ব্যবহার করেও একটি সংস্থান অ্যাক্সেস করা যেতে পারে। প্যাকেজের নামগুলি উপেক্ষা করা হয়, তাই J2ObjC অ্যাপ্লিকেশনের জাভা উত্সগুলিতে Class.getResource(String name) বা Class.getResourceAsStream(String name) রেফারেন্সে নির্দিষ্ট করা পাথগুলি ব্যবহার করে অ্যাপ্লিকেশনের প্রধান বান্ডেলে পরম পাথগুলি সনাক্ত করে৷ উপরের উদাহরণে, Mumble.class.getResource("/oops/error.jpg") foo.bar প্যাকেজের নাম উপেক্ষা করে /oops/error.jpg এর একটি সম্পূর্ণ রিসোর্স পাথ রয়েছে।

একটি iOS অ্যাপে সম্পদ যোগ করা হচ্ছে

Xcode-এ একটি iOS অ্যাপে রিসোর্স ফাইল যোগ করতে, বিল্ড টার্গেটের বিল্ড ফেজ ট্যাবটি খুলুন। তারপর:

  • + আইকনে ক্লিক করুন (সাধারণ ট্যাবের অধীনে) এবং নতুন অনুলিপি ফাইল ফেজ নির্বাচন করুন।
  • গন্তব্য হিসাবে "সম্পদ" নির্বাচন করুন ( জাভা সম্পদ নয় )।
  • সম্পদ(গুলি) জন্য ডিরেক্টরি নির্দিষ্ট করুন।
  • + নির্বাচন করুন এবং এর তালিকায় ফাইল(গুলি) যোগ করুন।

আপেক্ষিক বা পরম রিসোর্স পাথ ব্যবহার করা হোক না কেন, প্রতিটি রিসোর্স ডিরেক্টরির জন্য একটি Xcode বিল্ডে একটি পৃথক কপি ফাইল বিল্ড ফেজ প্রয়োজন।

উদাহরণ

JreEmulation প্রকল্পে একটি "JRE JUnit Tests" অ্যাপ রয়েছে যা সেই লাইব্রেরির ইউনিট পরীক্ষা চালায়। কয়েকটি কপি ফাইল পর্যায় দেখতে সেই টার্গেটের বিল্ড ফেজগুলি নির্বাচন করুন, প্রতিটি আপেক্ষিক পাথের জন্য প্রতিটি তার সংস্থান দ্বারা ব্যবহৃত। এখানে, ClassTest.java প্রথমে একটি পরম পাথ এবং তারপর একটি আপেক্ষিক পাথ ব্যবহার করে একই সংস্থান লোড করে। এই কপি ফাইল বিল্ড ফেজ ব্যবহার করে পরীক্ষার রিসোর্স অন্তর্ভুক্ত করা হয়েছে:

Xcode সম্পদ