Frage

Ich erstelle eine Klasse einen Dateinamen zu speichern. Um dies zu tun, muss ich genau wissen, welche Zeichen sind ungültig und genau, welche Zeichen sind ungültig als Vorder- / Hinter Zeichen .

Windows Explorer trimmt führen und white-space Zeichen automatisch Hinter, wenn eine Datei zu benennen, also muss ich die gleichen Zeichen trimmen, wenn Sie einen Dateinamen Instanz zu konstruieren.

Ich dachte über die Verwendung von string.Trim (), aber es wäre naiv, der Standard-Zeichensatz zu übernehmen es mit den ungültigen führenden genau übereinstimmt trimmt / Dateinamen Zeichen des OS Hinter.

Dokumentation für string.Trim () sagt, dass es trimmt die folgenden Zeichen standardmäßig: U + 0009, U + 000A, U + 000B, U + 000C, U + 000D, U + 0020, 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 + 2009 U + 200A, U + 200B, U + 2028, U + 2029, U + 3000, U + FEFF

Leider sind einige der oben genannten Zeichen nicht für ungültig in einer Datei, weil sie von System.IO.Path.GetInvalidFileNameChars zurück nicht im Zeichensatz sind.

Bin ich dann richtig, dass string.Trim () könnte möglicherweise VALID führende entfernen / Zeichen aus einem Dateinamen angehängte daher die Dateinamen korrumpieren?

Was genau die ungültige führende sind / Zeichen für einen Dateinamen in das Windows Vista OS Hinter? Ich verstehe, dass sie nicht unbedingt das gleiche wie das Dateisystem selbst sind, da das Betriebssystem auf verschiedenen laufen Dateisysteme.

War es hilfreich?

Lösung

  

Bin ich dann richtig, dass string.Trim ()   könnte möglicherweise VALID entfernen   Vorder- / Hinter Zeichen von a   Dateiname, der daher korrumpieren   Dateiname?

Ja. Noch so auf einem UNIX-ähnlichen System, wobei ‚X‘ einen gültigen Dateinamen und unterscheidet sich von ‚x‘

Andere Tipps

Dateinamen können Start / Ende in Räumen. Schneiden Sie werden sie beseitigen.

Dateinamen können nicht enthalten

/ \ : * ? " | < >

Dieser Code läuft und erstellt die Datei:

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

Hinweis: der tatsächliche Name der Datei mit dem obigen Code erstellt zu sein scheint „Datei foo.“. Wenn ich die Dateinamen im Explorer bearbeiten der Raum nicht da ist, aber wenn ich den obigen Code erneut ausführen, ersetzt er die Datei.

Hinweis: Ich habe den Code von http://www.startvbdotnet.com/files/ default.aspx und fügte hinzu, die Räume

. HINWEIS: Ich stelle fest, dass Vista Explorer umbenennen werden Sie die Leerzeichen vor oder nach dem Dateinamen nicht zulassen, hinzufügen, so können Sie machen. „Foo txt“, aber nicht „foo.txt“ mit dieser Methode

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top