জাভাতে ইউআরএল একটি স্থানীয় ফাইল পাস করুন


175

URLইউনিট পরীক্ষার উদ্দেশ্যে স্থানীয় ফাইল ব্যবহার করে আমি কীভাবে একটি নতুন অবজেক্ট তৈরি করব ?

উত্তর:


283
new File(path).toURI().toURL();

21
জাভা 7+ এর জন্য: পাথস.জেট ("পথ", "থেকে", "স্টাফ") .উড়ি ()। টুআরএল ()
আজাক্স

46

জাভা 7 ব্যবহার করে:

Paths.get(string).toUri().toURL();

তবে, আপনি সম্ভবত একটি পেতে চান URI। উদাহরণস্বরূপ, একটি দিয়ে URIশুরু হয় file:///তবে একটি ইউআরএল file:/(কমপক্ষে, toStringএটিই উত্পাদন করে)।


"... একটি ইউআরআই ফাইল: /// দিয়ে শুরু হয় তবে ফাইলের সাথে একটি ইউআরএল: / ..." এটি কি উইন্ডোজ এবং লিনাক্স উভয়ের ক্ষেত্রেই?
ptntialunrlsd

@ptnualunrlsd এটি একটি ভাল প্রশ্ন। আমি চেক করিনি, তবে আমি হ্যাঁ অনুমান করব।
আলেকসান্ডার ডাবিনস্কি

7
না An একটি ফাইল ইউআরআই "ফাইল: //" দিয়ে শুরু হয় এবং তারপরে হোস্টের তালিকাভুক্ত হয় (সাধারণত বাদ দেওয়া হয়), তারপরে "/" এবং "ফু / বার" পথটি (সাধারণত নিখুঁত পাথ হিসাবে পড়ার উদ্দেশ্যে বোঝানো হয়)। এইভাবে "ফাইল: /// ফু / ভার"। একটি ইউআরআই যা "ফাইল: / foo / বার" এর মতো দেখায় তা ভুল। আরও দেখুন: ইউআরআই স্কিম ফাইল করুন
ডেভিড টনহোফার

@ ডেভিডটনহোফার ইউআরআই এর ব্যাখ্যার জন্য আপনাকে ধন্যবাদ, তবে এটি পিটিএনটিউয়ালআরলসডির প্রশ্নের উত্তর দেয় না । '... টুআরএল ()। টু স্ট্রিং ()' লিনাক্সে কী উত্পাদন করে? এছাড়াও, আমি আপনার সম্পাদনাগুলি উল্টিয়েছি কারণ তারা আমার উত্তরটি অর্থ পরিবর্তন না করে আরও শব্দময় করে তুলেছে।
আলেকসান্দ্র ডাবিনস্কি

3
@ অ্যালেক্সান্ডারডুবিনস্কি যদিও ওরাকল জাভাদোকের দিকে পয়েন্টার রেখে দেওয়া ভাল তবে .. এর মাধ্যমে ক্লিক করা সহজ java.nio.file.Paths। এছাড়াও, দয়া করে আপনার স্পষ্ট করে নিশ্চিত করুন যে আপনি "ইউআরআই বনাম ইউআরএল" এর প্রয়োগগুলি বোঝাতে চাইছেন । আনভে java.net.URL.toString()ইউনিক্সে একই জিনিস তৈরি করে, যেমন এটি করা উচিত। এটি কেবল একটি "/" প্রদর্শন করে যা খুব ভুল ( ফাইল ইউআরআই স্কিম দেখুন )। আমি মনে করি এটি জাভাতে কারণগুলির কারণে, ভাল ব্যবহারের কারণে java.net.URI। এটি কলটিতে সঠিকভাবে "ফাইল: // [হোস্ট] /" উত্পন্ন করে .toString()
ডেভিড টনহোফার


21
new URL("file:///your/file/here")

1
যেখানে /your/file/hereইউনিক্স / লিনাক্সের কোনও ফাইলের পরম পথ path উইন্ডোজে এটি আমার মনে হয় আলাদা হবে।
রবিন গ্রিন

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

new URL("file:my.properties");
weberjn

যদিও এটি সঠিক, এটি বহনযোগ্য নয় কারণ এটি পরম পাথের উপর নির্ভর করে।
মাজনকি


5

সম্পূর্ণ সিনট্যাক্সটির জন্য এখানে দেখুন: http://en.wikedia.org/wiki/File_URI_scheme ইউনিক্স-মতো সিস্টেমের জন্য এটি @ অ্যালেক্সের মতোই হবে file:///your/file/hereযেখানে উইন্ডোজ সিস্টেমের জন্য হবেfile:///c|/path/to/file


7
ম্যানুয়ালি তা করবেন না। File.toURI().toURL()যাবার উপায়
শন প্যাট্রিক ফ্লয়েড

3
@ সানপ্যাট্রিকফ্লাইড কখনও কখনও আপনার পছন্দ হয় না, যেমন এটি কোনও .propertiesফাইলের মধ্যে থাকে।
সেলড

@ আর্টবি আমি দেখতে পাচ্ছি না কীভাবে এটি একটি পার্থক্য তৈরি করে
সান প্যাট্রিক ফ্লয়েড

2
@ সানপ্যাট্রিকফ্লয়ড, আপনি যখন অনুসন্ধান করছেন তখন এই প্রশ্ন / উত্তরটি আসে java file url, যা আমার ক্ষেত্রে এর অর্থ হ'ল আমি কোনও file://ইউআরএল, জাভাতে কোনও .propertiesফাইলে ব্যবহার করার জন্য , বা ম্যানুয়ালি টাইপ করার জন্য ইত্যাদি
বিন্যাস অনুসন্ধান করছিলাম

1
@ সানপ্যাট্রিকফ্লাইড কখনও কখনও আপনার কেবল উত্সটিতে সোর্স কোড অ্যাক্সেস করতে পারে না এবং file://দুর্ভাগ্যক্রমে প্রয়োজনীয়। সিস্টেম নির্ভর হওয়া এত বড় সমস্যা নয় যেহেতু এটি একটি পরিবর্তনীয় সম্পত্তি।
ভাইকিংস্টিভ

4

আপনি ব্যবহার করতে পারেন

[AnyClass].class.getResource(filePath)

2
তবে কেবল যদি সেই ফাইলটি
ক্লাসপথের

1
যদি "ফাইলপথ" কোনও জারে পাওয়া যায় তবে ফলাফল URL টির মতো jar:file:/home/user/a/b/c/foo.jar!/com/example/stuff/config.txt
ডেভিড টোনহোফার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.