سؤال

أخلق فئة لتخزين اسم ملف. للقيام بذلك، أحتاج إلى معرفة الشخصيات بالضبط غير صالحة وغير صالحة بالضبط غير صالحة كما الشخصيات الرائدة / الزائدة.

يقوم Windows Explorer بإدخال الحواف الرائدة والأحرف المسفافة البيضاء تلقائيا عند تسمية ملف، لذلك أحتاج إلى تقليم نفس الأحرف عند إنشاء مثيل اسم الملف.

فكرت في استخدام String.trim ()، ولكن سيكون ساذجا لتحمل مجموعة الأحرف الافتراضية التي تتزامن بها Trails بالضبط بأحرف الملفات البادئة / الزائدة غير صالحة من نظام التشغيل.

توثيق بالنسبة إلى String.trim () تقول إنه يقوم بتصوير الأحرف التالية بشكل افتراضي: U + 0009، U + 000A، U + 000B، U + 000D، U + 0020، U + 0085، U + 00A0، U + 0085، U + 00A0، U + 0085، U + 00A0، U + 1680، U + 2000، U + 2001، U + 2002، U + 2003، U + 2004، U + 2005، U + 2006، U + 2007، U + 2008، U + 2008، U + 2009، U + 200A، U + 2009، U + 200A، U + 200B U + 2028، U + 2029، U + 3000، U + FEFF

لسوء الحظ، بعض الأحرف المذكورة أعلاه غير صالحة في ملف، لأنها ليست في مجموعة الأحرف التي تم إرجاعها بواسطة system.io.path.getinvalidfilenamechars.

أنا ثم قمت بتصحيح تلك string.trim () قد يؤدي إلى إزالة الأحرف الرائدة / الزائدة صالحة من اسم الملف، وبالتالي إفساد اسم الملف؟

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

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

المحلول

أنا ثم قمت بتصحيح تلك string.trim () قد يؤدي إلى إزالة الأحرف الرائدة / الزائدة صالحة من اسم الملف، وبالتالي إفساد اسم الملف؟

نعم. أكثر من ذلك على نظام مثل Unix، حيث "X" هو اسم ملف صالح ومميز عن "X"

نصائح أخرى

يمكن أن تبدأ أسماء الملفات / تنتهي في المسافات. سوف تقليم القضاء عليها.

لا يمكن أن تحتوي أسماء الملفات

/ \ : * ? " | < >

يعمل هذا الرمز وإنشاء الملف:

Imports System.IO
Module Module1

Sub Main()
    Dim fs As New FileStream("d:\temp\   file . foo ", FileMode.Create, _
       FileAccess.Write)
    'declaring a FileStream and creating a word document file named file with
    'access mode of writing
    Dim s As New StreamWriter(fs)
    'creating a new StreamWriter and passing the filestream object fs as argument
    s.BaseStream.Seek(0, SeekOrigin.End)
    'the seek method is used to move the cursor to next position to avoid text to be
    'overwritten
    s.WriteLine("This is an example of using file handling concepts in VB .NET.")
    s.WriteLine("This concept is interesting.")
    'writing text to the newly created file
    s.Close()
End Sub

End Module

ملاحظة: يبدو أن الاسم الفعلي للملف الذي تم إنشاؤه باستخدام الرمز أعلاه "ملف. فو". إذا قمت بتحرير اسم الملف في Explorer، فستكون المساحة، لكن عندما أعد تشغيل التعليمات البرمجية أعلاه، فإنها تحل محل الملف.

ملاحظة: أخذت الرمز من http://www.startvbdott.com/files/default.aspx. وأضاف المساحات

ملاحظة: لاحظ أن إعادة تسمية Explorer في Vista لن يسمح لك بإضافة المسافات قبل أو بعد اسم الملف، حتى تتمكن من صنع "Foo. TXT" ولكن ليس "foo.txt" باستخدام هذه الطريقة.

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