File.separator বা File.pathSeparator


519

ইন Fileবর্গ দুটি স্ট্রিং আছে, separatorএবং pathSeparator

পার্থক্য কি? আমার কখন অন্যটির ওপরে ব্যবহার করা উচিত?


6
নামকরণটি কিছুটা বিভ্রান্তিকর, এর দ্রুতগতির মতো কিছু দ্রুত প্রয়োজন এটি স্পষ্ট ভয়ঙ্কর (সিএফ। পার্ল)। জন্য উদাহরণ তাকান pathSeparatorChar এবং separatorChar । বা সাধারণ স্মৃতিবিজ্ঞান ব্যবহার করুন: পাথসেপেটর পথগুলি পৃথক করে।
মার্টিনাস

6
দু'জনকেই স্ক্রিনে মুদ্রণ করতে এক মিনিট সময় নিলে আপনার প্রশ্নের উত্তর দেওয়া যেত ...
জিন-ফ্রান্সোয়াইস কার্বেট

13
আমি সাধারণত একমত হওয়ার পরে, কেবল তার সিস্টেমে মুদ্রণ করা অন্যান্য অপারেটিং সিস্টেমের জন্য রূপগুলি প্রদর্শন করে না।
b1nary.atr0phy

উত্তর:


681

যদি আপনি বোঝাতে চান File.separatorএবং File.pathSeparatorতারপর:

  • File.pathSeparatorফাইল পাথের তালিকার পৃথক ফাইল পাথ পৃথক করতে ব্যবহৃত হয়। উইন্ডোজ, PATH পরিবেশ পরিবর্তনশীল বিবেচনা করুন vari আপনি একটি ব্যবহার ;তাই Windows এ ফাইল পাথ আলাদা করতে File.pathSeparatorহবে ;

  • File.separatorহয় হয় /বা \এটি একটি নির্দিষ্ট ফাইলে পাথ বিভক্ত করতে ব্যবহৃত হয়। উদাহরণস্বরূপ উইন্ডোজ এটি \বা হয়C:\Documents\Test


6
মত মনে হয় File.separatorকরা উচিত File.fileSeparatorসংক্রান্তFile.pathSeparator
এডি

1
@ এডি আমি আপনার বক্তব্যটি দেখতে পাচ্ছি তবে ক্লাসের নাম হওয়ায় এটি অতিরিক্ত কাজ হতে পারে File। আমি মনে করি ফাইল অংশটি অন্তর্নিহিত। তবে জাভা দিয়ে তারা কী করেছে তা তারা কেন জানে।
ব্যবহারকারী 489041

117

আপনি যখন কোনও ফাইল পাথ তৈরি করছেন তখন আপনি বিভাজক ব্যবহার করুন। ইউনিক্সে তাই বিভাজক হয় /। সুতরাং আপনি যদি ইউনিক্সের পথটি তৈরি করতে চান তবে আপনি /var/tempএটি এটি করতে পারেন:

String path = File.separator + "var"+ File.separator + "temp"

আপনি pathSeparatorযখন ক্লাসপথের মতো ফাইলগুলির একটি তালিকা নিয়ে কাজ করছেন তখন আপনি এটি ব্যবহার করেন । উদাহরণস্বরূপ, যদি আপনার অ্যাপ্লিকেশনটি জারগুলির একটি তালিকা যুক্তি হিসাবে গ্রহণ করে তবে ইউনিক্সে সেই তালিকাটিকে বিন্যাস করার মানক উপায়টি হ'ল:/path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar

সুতরাং ফাইলগুলির একটি তালিকা দেওয়া আপনি এই জাতীয় কিছু করবেন:

String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);

5
আপনি যদি একটি * নিক্স পাথটি এর মতো করে তৈরি করে থাকেন /var/tempতবে এটি File.separatorইতিমধ্যে ব্যবহারযোগ্য নয় কারণ আপনার কাছে ইতিমধ্যে প্ল্যাটফর্ম-নির্ভর কোড রয়েছে। পাশাপাশি হার্ডকোডের পথটি।
ইস্পির

109

java.io.Fileশ্রেণিতে চারটি স্ট্যাটিক বিভাজক ভেরিয়েবল রয়েছে। আরও ভাল বোঝার জন্য, আসুন কিছু কোডের সাহায্যে বুঝতে পারি

  1. বিভাজক: স্ট্রিং হিসাবে প্ল্যাটফর্ম নির্ভর ডিফল্ট নাম-বিভাজক চরিত্র। উইন্ডোজের জন্য এটি '\' এবং ইউনিক্সের জন্য এটি '/'
  2. বিভাজকচর: বিভাজক হিসাবে একই তবে এটি চর
  3. পাথসেপেটর: প্যাথ-বিভাজকের জন্য প্ল্যাটফর্ম নির্ভরশীল পরিবর্তনশীল। উদাহরণস্বরূপ PATH বা CLASSPATH পরিবর্তনশীল তালিকাগুলির পাথের তালিকা ':' দ্বারা ইউনিক্স সিস্টেমে এবং ';' দ্বারা বিভক্ত; উইন্ডোজ সিস্টেমে
  4. পাথসেপেটরচর: পাথসেপেটর হিসাবে একই তবে এটি চর

মনে রাখবেন যে এগুলি সমস্তই চূড়ান্ত পরিবর্তনশীল এবং সিস্টেম নির্ভর।

এই বিভাজক ভেরিয়েবলগুলি মুদ্রণের জন্য এখানে জাভা প্রোগ্রামটি দেওয়া আছে। FileSeparator.java

import java.io.File;

public class FileSeparator {

    public static void main(String[] args) {
        System.out.println("File.separator = "+File.separator);
        System.out.println("File.separatorChar = "+File.separatorChar);
        System.out.println("File.pathSeparator = "+File.pathSeparator);
        System.out.println("File.pathSeparatorChar = "+File.pathSeparatorChar);
    }

}

ইউনিক্স সিস্টেমে উপরের প্রোগ্রামের আউটপুট:

File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :

উইন্ডোজ সিস্টেমে প্রোগ্রামটির আউটপুট:

File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;

আমাদের প্রোগ্রাম প্ল্যাটফর্মটি স্বাধীন করতে, আমাদের সর্বদা ফাইল পাথ তৈরি করতে বা PATH, CLASSPATH এর মতো কোনও সিস্টেমের ভেরিয়েবলগুলি পড়তে এই বিভাজকগুলি ব্যবহার করা উচিত।

বিভাজককে সঠিকভাবে কীভাবে ব্যবহার করতে হয় সে সম্পর্কে কোড স্নিপেট এখানে।

//no platform independence, good for Unix systems
File fileUnsafe = new File("tmp/abc.txt");
//platform independent and safe to use across Unix and Windows
File fileSafe = new File("tmp"+File.separator+"abc.txt");

1
নোট করুন যে জাভাতে ব্যাকস্ল্যাশ অক্ষরটি আসলে \\, কারণ একক ব্যাকস্ল্যাশ হ'ল অন্যান্য বিশেষ চরিত্রের শর্টহ্যান্ডসের জন্য পালানোর চরিত্র, সুতরাং ব্যাকস্ল্যাশটি নিজেই পালাতে ব্যবহৃত হয়। Stringএবং charউল্লিখিত পদ্ধতি দ্বারা ফিরে সঠিকভাবে ফরম্যাট ব্যাকস্ল্যাশ (যদি উইন্ডোজ দিকে) আসতে না।
এরিক

নতুন ফাইল ("tmp / abc.txt"); এটি মূলত উইন্ডোজ এবং লিনাক্সের জন্য তবে এটি ইউনিক্স নতুন ফাইলের জন্য মূলত নয় ("tmp \\ abc.txt"); এই সমস্যা শুধুমাত্র UNIX হয়
dev-Jacol
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.