Erlang 21

filename




erlang

filename

मॉड्यूल

फ़ाइल का नाम

मॉड्यूल सारांश

फ़ाइल नाम हेरफेर फ़ंक्शन।

विवरण

यह मॉड्यूल फ़ाइल नाम का विश्लेषण और हेरफेर करने के लिए कार्य प्रदान करता है। ये फ़ंक्शन डिज़ाइन किए गए हैं ताकि Erlang कोड कई अलग-अलग प्लेटफार्मों पर अलग-अलग फ़ाइलनाम स्वरूपों के साथ काम कर सके। फ़ाइलनाम का अर्थ है सभी स्ट्रिंग जो किसी फ़ाइल को दर्शाने के लिए उपयोग की जा सकती हैं। फ़ाइलनाम एक छोटा सा रिश्तेदार नाम हो सकता है जैसे कि foo.erl , एक लंबा निरपेक्ष नाम जिसमें ड्राइव डिज़ाइनर, D:\usr/local\bin\erl/lib\tools\foo.erl , या बीच में कोई भी भिन्नता नाम शामिल है। ।

विंडोज में, सभी फ़ंक्शंस केवल आगे के स्लैश के साथ फ़ाइलनाम लौटाते हैं, भले ही तर्कों में बैकस्लैश हों। अनावश्यक निर्देशिका विभाजकों को हटाकर फ़ाइल नाम को सामान्य करने के लिए, join/1 उपयोग करें।

मॉड्यूल raw filenames का समर्थन करता है कि अगर कोई बाइनरी मौजूद है, या फ़ाइल के रिटर्न मान के अनुसार फ़ाइल नाम की व्याख्या नहीं की जा सकती है file:native_name_encoding/0 , एक कच्चा फ़ाइल नाम भी वापस आ जाता है। उदाहरण के लिए, join/1 एक पथ घटक के साथ प्रदान किया गया है जो एक बाइनरी है (और वर्तमान देशी फ़ाइल नाम एन्कोडिंग के तहत व्याख्या नहीं की जा सकती है) एक कच्चे फ़ाइलनाम में परिणाम होता है जिसे लौटाया जाता है (सम्मिलित ऑपरेशन निश्चित रूप से किया जाता है)। कच्चे फ़ाइलनाम के बारे में अधिक जानकारी के लिए, file मॉड्यूल देखें।

ध्यान दें

इस मॉड्यूल में कार्यक्षमता आम तौर पर मान्य इनपुट को मानती है और जरूरी नहीं कि इनपुट पर विफल हो जो एक वैध एन्कोडिंग का उपयोग नहीं करता है, लेकिन इसके बजाय बहुत संभव है कि अवैध आउटपुट का उत्पादन करें।

फ़ाइल संचालन को नल वर्ण (पूर्णांक मान शून्य) वाले फ़ाइलनाम को स्वीकार करने के लिए उपयोग किया जाता है। इसके कारण नाम को काट दिया गया और कुछ मामलों में आदिम संचालन के तर्क को मिलाया गया। फ़ाइल नाम के अंदर अशक्त वर्णों वाले फ़ाइलनाम अब अस्वीकार कर दिए गए हैं और इससे आदिम फ़ाइल कार्रवाई विफल हो जाएगी।

चेतावनी

वर्तमान में फ़ाइल नाम के अंत में अशक्त अक्षर आदिम फ़ाइल संचालन द्वारा स्वीकार किए जाएंगे। हालांकि इस तरह के फाइलनेम को अभी भी अमान्य माना जाता है। कार्यान्वयन भविष्य में भी बदल जाएगा और ऐसे फ़ाइलनामों को अस्वीकार कर देगा।

जानकारी का प्रकार

basedir_type() =
user_cache |
user_config |
user_data |
user_log |
site_config |
site_data

निर्यात

absname (फ़ाइल नाम) -> file:filename_all()

प्रकार

एक सापेक्ष Filename देता है और एक पूर्ण नाम देता है। कम से कम निरपेक्ष नाम बनाने का कोई प्रयास नहीं किया जाता है, क्योंकि इससे लिंक की अनुमति देने वाले फ़ाइल सिस्टम पर गलत परिणाम मिल सकते हैं।

यूनिक्स उदाहरण:

1> pwd().
"/usr/local"
2> filename:absname("foo").
"/usr/local/foo"
3> filename:absname("../x").
"/usr/local/../x"
4> filename:absname("/").
"/"

विंडोज उदाहरण:

1> pwd().
"D:/usr/local"
2> filename:absname("foo").
"D:/usr/local/foo"
3> filename:absname("../x").
"D:/usr/local/../x"
4> filename:absname("/").
"D:/"
absname (फ़ाइल नाम, Dir) -> file:filename_all() नाम_all file:filename_all()

प्रकार

absname/1 रूप में भी, सिवाय इसके कि निर्देशिका को फ़ाइल नाम के सापेक्ष बनाने के लिए तर्क Dir में निर्दिष्ट किया गया है।

absname_join (डर, फ़ाइल नाम) -> file:filename_all()

प्रकार

एक रिश्तेदार फ़ाइल नाम के साथ एक पूर्ण निर्देशिका में शामिल होता है। join/2 समान, लेकिन कच्चे फ़ाइल नाम की लंबाई पर कड़े प्रतिबंधों के साथ प्लेटफार्मों पर और प्रतीकात्मक लिंक के लिए कोई समर्थन नहीं (पढ़ें: VxWorks), Filename में प्रमुख माता-पिता के घटक घटकों को Filename में अनुगामी निर्देशिका घटकों के खिलाफ मिलान किया जाता है ताकि उन्हें परिणाम से हटाया जा सके - इसकी लंबाई कम करना।

आधार (प्रकार, आवेदन) -> file:filename_all()

प्रकार

आधार के बराबर basedir(Type,Application, #{})

आधार (प्रकार, आवेदन, खुलता है) -> file:filename_all()

प्रकार

किसी दिए गए प्रकार के लिए एक उपयुक्त पथ, या पथ देता है। यदि Opts को Opts में सेट नहीं किया गया है, तो फ़ंक्शन मूल विकल्प के लिए डिफ़ॉल्ट होगा, जो कि 'linux' , 'darwin' या 'windows' , जैसा कि os:type/0 समझा जाता है। 'darwin' या 'windows' रूप में पहचानी जाने वाली किसी भी चीज की व्याख्या 'linux' रूप में 'linux'

विकल्प 'author' और 'version' केवल 'windows' विकल्प मोड के साथ उपयोग किए जाते हैं।

  • user_cache

    पथ स्थान एक स्थानीय मशीन पर क्षणिक डेटा फ़ाइलों के लिए अभिप्रेत है।

    लिनक्स पर: ओएस पर्यावरण चर XDG_CACHE_HOME सम्मान करता है।

    1> filename:basedir(user_cache, "my_application", #{os=>linux}).
    "/home/otptest/.cache/my_application"
    डार्विन पर:
    1> filename:basedir(user_cache, "my_application", #{os=>darwin}).
    "/home/otptest/Library/Caches/my_application"
    विंडोज पर:
    1> filename:basedir(user_cache, "My App").
    "c:/Users/otptest/AppData/Local/My App/Cache"
    2> filename:basedir(user_cache, "My App").
    "c:/Users/otptest/AppData/Local/My App/Cache"
    3> filename:basedir(user_cache, "My App", #{author=>"Erlang"}).
    "c:/Users/otptest/AppData/Local/Erlang/My App/Cache"
    4> filename:basedir(user_cache, "My App", #{version=>"1.2"}).
    "c:/Users/otptest/AppData/Local/My App/1.2/Cache"
    5> filename:basedir(user_cache, "My App", #{author=>"Erlang",version=>"1.2"}).
    "c:/Users/otptest/AppData/Local/Erlang/My App/1.2/Cache"
  • user_config

    पथ का स्थान लगातार कॉन्फ़िगरेशन फ़ाइलों के लिए अभिप्रेत है।

    लिनक्स पर: ओएस पर्यावरण चर XDG_CONFIG_HOME सम्मान करता है।

    2> filename:basedir(user_config, "my_application", #{os=>linux}).
    "/home/otptest/.config/my_application"
    डार्विन पर:
    2> filename:basedir(user_config, "my_application", #{os=>darwin}).
    "/home/otptest/Library/Application Support/my_application"
    विंडोज पर:
    1> filename:basedir(user_config, "My App").
    "c:/Users/otptest/AppData/Roaming/My App"
    2> filename:basedir(user_config, "My App", #{author=>"Erlang", version=>"1.2"}).
    "c:/Users/otptest/AppData/Roaming/Erlang/My App/1.2"
  • user_data

    पथ स्थान लगातार डेटा फ़ाइलों के लिए अभिप्रेत है।

    लिनक्स पर: ओएस पर्यावरण चर XDG_DATA_HOME सम्मान करता है।

    3> filename:basedir(user_data, "my_application", #{os=>linux}).
    "/home/otptest/.local/my_application"
    डार्विन पर:
    3> filename:basedir(user_data, "my_application", #{os=>darwin}).
    "/home/otptest/Library/Application Support/my_application"
    विंडोज पर:
    8> filename:basedir(user_data, "My App").
    "c:/Users/otptest/AppData/Local/My App"
    9> filename:basedir(user_data, "My App",#{author=>"Erlang",version=>"1.2"}).
    "c:/Users/otptest/AppData/Local/Erlang/My App/1.2"
  • user_log

    पथ स्थान एक स्थानीय मशीन पर क्षणिक लॉग फ़ाइलों के लिए अभिप्रेत है।

    लिनक्स पर: ओएस पर्यावरण चर XDG_CACHE_HOME सम्मान करता है।

    4> filename:basedir(user_log, "my_application", #{os=>linux}).
    "/home/otptest/.cache/my_application/log"
    डार्विन पर:
    4> filename:basedir(user_log, "my_application", #{os=>darwin}).
    "/home/otptest/Library/Caches/my_application"
    विंडोज पर:
    12> filename:basedir(user_log, "My App").
    "c:/Users/otptest/AppData/Local/My App/Logs"
    13> filename:basedir(user_log, "My App",#{author=>"Erlang",version=>"1.2"}).
    "c:/Users/otptest/AppData/Local/Erlang/My App/1.2/Logs"
  • site_config

    लिनक्स पर: ओएस पर्यावरण चर XDG_CONFIG_DIRS सम्मान करता है।

    5> filename:basedir(site_data, "my_application", #{os=>linux}).
    ["/usr/local/share/my_application",
     "/usr/share/my_application"]
    6> os:getenv("XDG_CONFIG_DIRS").
    "/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg"
    7> filename:basedir(site_config, "my_application", #{os=>linux}).
    ["/etc/xdg/xdg-ubuntu/my_application",
     "/usr/share/upstart/xdg/my_application",
     "/etc/xdg/my_application"]
    8> os:unsetenv("XDG_CONFIG_DIRS").
    true
    9> filename:basedir(site_config, "my_application", #{os=>linux}).
    ["/etc/xdg/my_application"]
    डार्विन पर:
    5> filename:basedir(site_config, "my_application", #{os=>darwin}).
    ["/Library/Application Support/my_application"]
  • site_data

    लिनक्स पर: ओएस पर्यावरण चर XDG_DATA_DIRS सम्मान करता है।

    10> os:getenv("XDG_DATA_DIRS").
    "/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/"
    11> filename:basedir(site_data, "my_application", #{os=>linux}).
    ["/usr/share/ubuntu/my_application",
     "/usr/share/gnome/my_application",
     "/usr/local/share/my_application",
     "/usr/share/my_application"]
    12> os:unsetenv("XDG_DATA_DIRS").
    true
    13> filename:basedir(site_data, "my_application", #{os=>linux}).
    ["/usr/local/share/my_application",
     "/usr/share/my_application"]
    डार्विन पर:
    5> filename:basedir(site_data, "my_application", #{os=>darwin}).
    ["/Library/Application Support/my_application"]
बेसन (फ़ाइल नाम) -> file:filename_all()

प्रकार

यदि कोई निर्देशिका विभाजक नहीं है, तो Filename का अंतिम घटक या स्वयं Filename लौटाता है।

उदाहरण:

5> filename:basename("foo").
"foo"
6> filename:basename("/usr/foo").
"foo"
7> filename:basename("/").
[]
बेसन (फ़ाइल नाम, एक्सटेंशन) -> file:filename_all()

प्रकार

एक्सटेंशन के साथ Filename के अंतिम घटक को वापस ले जाता है। इस फ़ंक्शन का उपयोग एक (संभव) विशिष्ट एक्सटेंशन को हटाने के लिए किया जाना है। मौजूदा एक्सटेंशन को हटाने के लिए जब आप अनिश्चित हों कि यह कौन सा है, rootname(basename(Filename))

उदाहरण:

8> filename:basename("~/src/kalle.erl", ".erl").
"kalle"
9> filename:basename("~/src/kalle.beam", ".erl").
"kalle.beam"
10> filename:basename("~/src/kalle.old.erl", ".erl").
"kalle.old"
11> filename:rootname(filename:basename("~/src/kalle.erl")).
"kalle"
12> filename:rootname(filename:basename("~/src/kalle.beam")).
"kalle"
dirname (फ़ाइल नाम) -> file:filename_all()

प्रकार

Filename का निर्देशिका भाग लौटाता है।

उदाहरण:

13> filename:dirname("/usr/src/kalle.erl").
"/usr/src"
14> filename:dirname("kalle.erl").
"."
5> filename:dirname("\\usr\\src/kalle.erl"). % Windows
"/usr/src"
एक्सटेंशन (फ़ाइल नाम) -> file:filename_all()

प्रकार

अवधि सहित, Filename का फ़ाइल एक्सटेंशन लौटाता है। यदि कोई एक्सटेंशन मौजूद नहीं है, तो एक खाली स्ट्रिंग लौटाता है।

उदाहरण:

15> filename:extension("foo.erl").
".erl"
16> filename:extension("beam.src/kalle").
[]
find_src (बीम) ->
{SourceFile, विकल्प} | {त्रुटि, {ErrorReason, मॉड्यूल}}
find_src (बीम, नियम) ->
{SourceFile, विकल्प} | {त्रुटि, {ErrorReason, मॉड्यूल}}

प्रकार

मॉड्यूल के लिए स्रोत फ़ाइल नाम और संकलक विकल्प ढूँढता है। परिणाम फिर से compile:file/2 करने के compile:file/2 खिलाया जा सकता है compile:file/2 फिर से फ़ाइल संकलित करने के लिए

चेतावनी

इस फ़ंक्शन को पदावनत किया जाता है। filelib:find_source/1 उपयोग करें filelib:find_source/1 फाइल्स खोजने के बजाय filelib:find_source/1

यदि संभव हो, तो बीम विकल्प और सार कोड प्रारूप को बीम फ़ाइल से निकालने के लिए beam_lib(3) मॉड्यूल का उपयोग करें और इसके बजाय संकलन करें।

तर्क Beam , जो एक स्ट्रिंग या एक परमाणु हो सकता है, या तो मॉड्यूल का नाम या स्रोत कोड का पथ निर्दिष्ट करता है, ".erl" एक्सटेंशन ".erl" साथ या उसके बिना। किसी भी स्थिति में, मॉड्यूल को कोड सर्वर, यानी code:which(Module) को सफल होना चाहिए।

Rules वर्णन करते हैं कि ऑब्जेक्ट कोड निर्देशिका ज्ञात होने पर स्रोत निर्देशिका कैसे पाई जा सकती है। यह tuples {BinSuffix, SourceSuffix} और इसकी व्याख्या इस प्रकार की जाती है: यदि निर्देशिका नाम का अंत जहां वस्तु BinSuffix मेल खाता है, तो BinSuffix से SourceSuffix को बदलकर बनाया गया नाम filelib:wildcard/1 कहकर विस्तारित किया जाता है। । यदि मैचों के बीच एक नियमित फ़ाइल मिलती है, तो फ़ंक्शन Options साथ उस स्थान को वापस करता है। अन्यथा अगले नियम की कोशिश की जाती है, और इसी तरह।

Rules चूक:

[{"", ""}, {"ebin", "src"}, {"ebin", "esrc"},
 {"ebin", "src/*"}, {"ebin", "esrc/*"}]

यदि यह सफल हो जाता है तो फ़ंक्शन {SourceFile, Options} लौटाता है। SourceFile बिना विस्तार के स्रोत फ़ाइल का पूर्ण पथ है ".erl" Options में Options शामिल हैं जो फ़ाइल को compile:file/2 साथ फ़ाइल को फिर से जमा करने के लिए आवश्यक हैं compile:file/2 , लेकिन report और verbose जैसे विकल्पों को बाहर करता है, जो कोड उत्पन्न होने के तरीके को नहीं बदलता है। विकल्प {outdir, Path} और {i, Path} में {i, Path} निरपेक्ष होने की गारंटी है।

समतल (फ़ाइल नाम) -> file:filename_all()

प्रकार

एक समान रूप से गहरी सूची के नाम को संबंधित फ्लैट स्ट्रिंग फ़ाइल नाम में वर्णों और परमाणुओं से मिलकर परिवर्तित करता है।

शामिल हों (घटक) -> file:filename_all()

प्रकार

निर्देशिका विभाजकों के साथ फ़ाइल नाम Components की सूची में शामिल होता है। यदि Components में से किसी एक तत्व में एक पूर्ण पथ शामिल है, जैसे "/xxx" , पूर्ववर्ती तत्व, यदि कोई हो, परिणाम से हटा दिए जाते हैं।

परिणाम "सामान्यीकृत" है:

  • निरर्थक निर्देशिका विभाजक हटा दिए जाते हैं।
  • विंडोज में, सभी निर्देशिका विभाजक आगे के स्लैश हैं और ड्राइव लेटर कम स्थिति में है।

उदाहरण:

17> filename:join(["/usr", "local", "bin"]).
"/usr/local/bin"
18> filename:join(["a/b///c/"]).
"a/b/c"
6> filename:join(["B:a\\b///c/"]). % Windows
"b:a/b/c"
शामिल हों (Name1, Name2) -> file:filename_all()

प्रकार

निर्देशिका विभाजकों के साथ दो फ़ाइल नाम घटकों को जोड़ता है। join([Name1, Name2]) लिए बराबर join([Name1, Name2])

nativename (पथ) -> file:filename_all()

प्रकार

वर्तमान प्लेटफ़ॉर्म पर कमांड शेल और देशी अनुप्रयोगों द्वारा स्वीकार किए गए फ़ॉर्म को Path परिवर्तित करता है। विंडोज पर, फॉरवर्ड स्लैश को बैकवर्ड स्लैश में बदला जाता है। सभी प्लेटफ़ॉर्म पर, नाम को सामान्यीकृत किया जाता है जैसा कि join/1 द्वारा किया जाता है।

उदाहरण:

19> filename:nativename("/usr/local/bin/"). % Unix
"/usr/local/bin"
7> filename:nativename("/usr/local/bin/"). % Windows
"\\usr\\local\\bin"
pathtype (पथ) -> निरपेक्ष | रिश्तेदार | volumerelative

प्रकार

पथ प्रकार लौटाता है, जो निम्न में से एक है:

absolute

पथ का नाम किसी विशिष्ट वॉल्यूम पर एक विशिष्ट फ़ाइल को संदर्भित करता है।

यूनिक्स उदाहरण: /usr/local/bin

विंडोज उदाहरण: D:/usr/local/bin

relative

पथ का नाम वर्तमान वॉल्यूम पर वर्तमान कार्यशील निर्देशिका के सापेक्ष है।

उदाहरण: foo/bar, ../src

volumerelative

पथ का नाम निर्दिष्ट वॉल्यूम पर वर्तमान कार्यशील निर्देशिका के सापेक्ष है, या यह वर्तमान कार्यशील वॉल्यूम पर एक विशिष्ट फ़ाइल है।

विंडोज उदाहरण: D:bar.erl, /bar/foo.erl

rootname (फ़ाइल नाम) -> file:filename_all()
रूटनाम (फ़ाइल नाम, एक्सटेंशन) -> file:filename_all() नाम_ file:filename_all()

प्रकार

एक फ़ाइल नाम एक्सटेंशन को निकालता है। rootname/2 rootname/1 रूप में काम करता है, सिवाय इसके कि एक्सटेंशन केवल तभी निकाला जाए जब वह rootname/1

उदाहरण:

20> filename:rootname("/beam.src/kalle").
/beam.src/kalle"
21> filename:rootname("/beam.src/foo.erl").
"/beam.src/foo"
22> filename:rootname("/beam.src/foo.erl", ".erl").
"/beam.src/foo"
23> filename:rootname("/beam.src/foo.beam", ".erl").
"/beam.src/foo.beam"
safe_relative_path (फ़ाइल नाम) -> असुरक्षित | SafeFilename

प्रकार

".." और "को समाप्त करके सापेक्ष पथ को संजीवित करता है।" निर्देशिका ट्रैवर्सल हमलों से बचाने के लिए घटक। यदि मार्ग unsafe , तो या तो स्वीकृत पथ नाम, या परमाणु unsafe है। पथ को निम्नलिखित परिस्थितियों में असुरक्षित माना जाता है:

  • रास्ता सापेक्ष नहीं है।

  • एक ".." घटक सापेक्ष पथ की जड़ से ऊपर चढ़ जाएगा।

उदाहरण:

1> filename:safe_relative_path("dir/sub_dir/..").
"dir"
2> filename:safe_relative_path("dir/..").
[]
3> filename:safe_relative_path("dir/../..").
unsafe
4> filename:safe_relative_path("/abs/path").
unsafe
विभाजन (फ़ाइल नाम) -> घटक

प्रकार

एक सूची लौटाता है जिसके तत्व Filename के पथ घटक हैं।

उदाहरण:

24> filename:split("/usr/local/bin").
["/","usr","local","bin"]
25> filename:split("foo/bar").
["foo","bar"]
26> filename:split("a:\\msdev\\include").
["a:/","msdev","include"]