إذن ما هو الاتجاه الصحيح لقطع المسار (/ أو ) تحت النوافذ؟

StackOverflow https://stackoverflow.com/questions/1589930

  •  22-09-2019
  •  | 
  •  

سؤال

يبدو أن Windows يصر على كتابة ضربة خلفية \ في مسارات الملفات ، في حين أن فئة URI الخاصة بـ .NET تكتبهم بقطع مائلة /. هل هناك أي طريقة صحيحة ، يتم قبولها حتى في أكثر الأنظمة بدائية؟ ولماذا يظهر URI من .NET الملاذ الآخر مقارنة مع بقية النوافذ؟

هل كانت مفيدة؟

المحلول

مسار الملف و URI مختلفان. \ صحيح في مسار ملف Windows و / صحيح في URI.

لذلك مسار الملف: C:\Documents\Foo يترجم إلى هذا URI: file:///C:/Documents/Foo

نصائح أخرى

Windows هو الطفل الوغد لأنظمة التشغيل في هذا الصدد ، لكن الكثير من واجهات برمجة التطبيقات ستقبل القطع المدمجة للأمام أيضًا. على Windows ، يبدو مسار الملف هكذا:

C:\Users\jsmith\Documents\file.txt

على نظام يشبه UNIX (بما في ذلك Mac OS X و Linux) ، يبدو أن نفس المسار يبدو:

/home/jsmith/Documents/file.txt

عنوان URL ، موحد في RFC 1738, دائماً يستخدم المائل الأمامي ، بغض النظر عن المنصة:

http://home.example.com/Documents/file.txt

سبب هذا التاريخي. لا يمكن للنوافذ حتى عكس تفكيرنا على عناوين URL. عندما تتحدث عن عمليات الرفع الخلفي ، فإن النظام الأساسي الوحيد الذي ستجده يستخدمها هو Windows (وبعضها الجدد الآخر).

حيث قد ترى أن عمليات الانغماس المستخدمة الأخرى غير النوافذ ستكون مسارات UNC - ومع ذلك ، فإن Windows هو المؤيد الرئيسي لها أيضًا:

\\HOMESVR\Documents\file.txt

ومهما كانت ، لا تصنع إعلانًا تجاريًا لموقع الويب الخاص بك وتقول "ترويج شركتي Com Back Slash".

السبب في ذلك هو جزء صغير من التاريخ. عندما تم إنشاء UNIX ، أو يجب أن أقول UNICS ، اختاروا / فاصلهم للدلائل. مرة أخرى في الأيام ، كانت وسائط التخزين صغيرة إلى حد ما ، وكان كل دليل في الجذر جهاز تخزين آخر مثبت ( /bin /lib إلخ)

عندما تصدر Microsoft MS-DOS الإصدار 1.0 ، لم يكن لديه دعم الدليل. استخدموا /حرف للمعلمات من البرامج (البرنامج /A /B)

MS-DOS 1.0 ، وهو عبارة عن علامات تجارية سريعة لـ Q-DOS ، عبارة عن نظام تشغيل مشتق من CP/M ، والذي ورث منه رسائل محرك (A: C: إلخ)

كما في الإصدارات اللاحقة ، أرادوا إضافة بعض دعم الدليل ، اختاروا استخدام لأن / كان لديهم بالفعل معنى آخر في نظام التشغيل الخاص بهم.

هناك العديد من القطع الأثرية لتاريخ الكمبيوتر في أنظمة التشغيل الحديثة ، والتي أفترض أن معظم الناس لا يدركونها ، ولكن لا يزال لديهم تأثير كبير على كيفية عملهم.

إذن ، ما هي الطريقة الصحيحة؟ إذا كان هناك أي شيء ، أود أن أقول إنها / لأن أنظمة التشغيل التي تشبه UNIX كانت موجودة هناك قبل أن تنفذ Microsoft دعم الدليل في DOS.

كملاحظة جانبية وتتحدث عن .NET ، يجب استخدامك System.IO.Path.DirectorySeparatorChar للحصول على فاصل المسار الحالي.

بقدر ما تذهب فواصل مسار نظام الملفات ، أعتقد ذلك على Windows الكل سوف تقبل واجهات برمجة التطبيقات القطع المائلة للأمام (ولكن ربما هناك بعض العربات التي تجرها الدواب التي لا تفعل ذلك) - المشكلة هي أن معظم التطبيقات لا تقبلها (أو تحليلها بشكل غير صحيح).

في الواقع ، إذا كنت أتذكر بشكل صحيح ، حتى MS -DOS قبلت "/" كفاصل مسار على مستوى API منذ أن بدأت في دعم الدعم الفرعي (v2.0) - ولكن بحلول ذلك الوقت كانت الشخصية "/" قد تم تأسيسها بالفعل كـ حرف "التبديل" لخيارات سطر الأوامر ، بحيث أصبح الانزلاق الخلفي فاصل مسار Defacto على DOS (ثم النوافذ لاحقًا).

URIS حيوان مشابه ولكنه مختلف عن مسارات الملفات ، ويجب أن يستخدم URIS دائمًا "/" لفصل المكونات. من المحتمل أن تقبل تطبيقات Windows واجهات برمجة التطبيقات "" كفاصل في URIS ربما لأن الأشخاص على دراية باستخدام التراجع الخلفي كفاصل على تلك الأنظمة ويمكن أيضًا استخدام URIs لتمثيل الملفات المحلية.


التوافه غير المجدي لليوم-في بعض الإصدارات المبكرة من MS-DOS ، كان هناك واجهة برمجة تطبيقات لتغيير حرف تبديل خيار سطر الأوامر (بشكل عام من "/" إلى "-") حتى تبدو الأوامر أكثر شبهاً بـ UNIX والأوامر قبول '/' كفاصل مسار على سطر الأوامر. كانت واجهة برمجة التطبيقات أقل من ناجحة (أعتقد أنها لم تدعمها التطبيقات عالميًا) ، وتم إزالتها في الإصدارات اللاحقة.

هم ... في القراءة الثانية ، هذه الإجابة كلها غير مجدية إلى حد كبير.

يستخدم Windows The Backslash (\) لمحدد نظام الملفات. لكل شيء آخر يتم استخدام القطع المائلة للأمام (/). ال Uri يستخدم النوع المائل للأمام لأن هذا هو كيف أ معرف الموارد الموحد ويعرف.

تعتمد الويب على طريقة UNIX لتحديد الدلائل في مسار مع مائل (/). Windows يفصل الدلائل مع backslashes ()

الطريقة الصحيحة تعتمد على استخدامه. للحصول على مسار إلى ملف محلي على جهاز Windows ، استخدم backslash. للحصول على مسار إلى مورد ويب أو ملف موجود على جهاز يعتمد على UNIX (يتضمن أجهزة Mac ، Linux) ، استخدم Slash.

السبب في أن .NET's URI يستخدم المائل الأمامي هو أنه تنسيق للاستخدام في WebBrowser.

سيقوم الخادم بكل العمل اللازم لربط موارد الويب بالملفات على محرك أقراص ثابت.

Windows يقبل كلاهما للمسار.

حاول فتح Windows Explorer واكتبها C:/Temp/Foo, c:\Temp\Foo سيتم فتحه بشكل صحيح.

backslash خطير ، حيث تحتاج إلى توخي الحذر مع الهروب طوال الوقت. تحتوي العديد من لغات البرمجة على مكافئ PrintF يستخدم التراجع الخلفي للهروب.

/ prontslash هو في الغالب غير ضارة.

: كان القولون (وإلى حد ما لا يزال) يستخدم من قبل Apple.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top