Directory Name + String anketten

  • VB.NET

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von FreakJNS.

    Ich hätt es so in der Art gelöst...

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class FileSystemInfoExt
    3. Public Property BasicInfo As FileSystemInfo
    4. Public Property CustomInfo As String
    5. Public Property InfoType As Type
    6. Public Property FullName As String
    7. Public ReadOnly Property CombinedInfo As String
    8. Get
    9. Return Me.BasicInfo.Name & " >> " & Me.CustomInfo
    10. End Get
    11. End Property
    12. Public Sub New(ByVal info As FileSystemInfo, ByVal customInfo As String)
    13. Me.BasicInfo = info
    14. Me.CustomInfo = customInfo
    15. Me.InfoType = info.GetType()
    16. Me.FullName = info.FullName
    17. End Sub
    18. End Class


    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Nicht ganz...

    Also mein Code ist folgender:

    VB.NET-Quellcode

    1. Using sw As StreamWriter = New StreamWriter("TestFile.txt")
    2. sw.WriteLine(ItemExtender(Of DirectoryInfo).Verpacke(New IO.DirectoryInfo("C:\Windows").GetDirectories("*.*", IO.SearchOption.TopDirectoryOnly), "FOLDER"))
    3. End Using


    Und das ergebnis in der Textdatei:

    Quellcode

    1. System.Collections.Generic.List`1[List_Files___Folders___Add_String.ItemExtender`1[System.IO.DirectoryInfo]]


    @SpacyX wie wäre für dein Code der Aufruf? ;o
    C# Developer
    Learning C++
    Beispiel für meine Variante:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. 'Dim dI As New DirectoryInfo("d:\downloads")
    5. 'Dim fI As New FileInfo("d:\downloads\world-90.zip")
    6. 'FileSystemInfoExtBindingSource.Add(New FileSystemInfoExt(dI, "dirTest"))
    7. 'FileSystemInfoExtBindingSource.Add(New FileSystemInfoExt(f*I, "fileTest"))
    8. Dim dI() As DirectoryInfo = New DirectoryInfo("d:\downloads").GetDirectories("*.*", SearchOption.AllDirectories)
    9. For i As Integer = 0 To dI.Length - 1
    10. FileSystemInfoExtBindingSource.Add(New FileSystemInfoExt(dI(i), "testDir" & i.ToString()))
    11. Next
    12. End Sub
    13. Private Sub FileSystemInfoExtBindingSource_CurrentChanged(sender As Object, e As EventArgs) Handles FileSystemInfoExtBindingSource.CurrentChanged
    14. If Not FileSystemInfoExtBindingSource.Current Is Nothing Then
    15. Dim fIE As FileSystemInfoExt = DirectCast(FileSystemInfoExtBindingSource.Current, FileSystemInfoExt)
    16. MessageBox.Show(fIE.BasicInfo.Attributes.ToString())
    17. End If
    18. End Sub
    19. End Class


    Hier ein Demo:

    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    SpaceyX schrieb:

    Ich hätt es so in der Art gelöst...

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class FileSystemInfoExt
    3. Public Property BasicInfo As FileSystemInfo
    4. Public Property CustomInfo As String
    5. Public Property InfoType As Type
    6. Public Property FullName As String
    7. Public ReadOnly Property CombinedInfo As String
    8. Get
    9. Return Me.BasicInfo.Name & " >> " & Me.CustomInfo
    10. End Get
    11. End Property
    12. Public Sub New(ByVal info As FileSystemInfo, ByVal customInfo As String)
    13. Me.BasicInfo = info
    14. Me.CustomInfo = customInfo
    15. Me.InfoType = info.GetType()
    16. Me.FullName = info.FullName
    17. End Sub
    18. End Class


    vb-paradise.de/index.php/Attachment/22373/


    Zuerst mal vielen dank dass du dir die Mühe gemacht hast extra für mein Problem ein Video zu erstellen :thumbup:
    Allerdings da ich nicht mit nem DataGridView arbeite, würde ich gerne alle Infos in eine Textdatei schreiben.

    Also nochmal um alle Unklarheiten zu beseitigen:

    VB.NET-Quellcode

    1. ListBox1.Items.AddRange(New IO.DirectoryInfo(TextBox1.Text).GetDirectories("*.*", IO.SearchOption.TopDirectoryOnly))
    2. ListBox1.Items.AddRange(New IO.DirectoryInfo(TextBox1.Text).GetFiles("*.*", IO.SearchOption.TopDirectoryOnly))


    Das ist der Basis Code, von dem ich ausgegangen bin.
    Er zeigt mir in meinem Zielverzeichnis alle Dateien und Ordner an.
    Nun möchte ich diese Ordnernamen/Dateinamen in eine Textdatei schreiben, allerdings bei jedem Ordner den String manipulieren,
    d.h. wenn mein Ordner

    Quellcode

    1. MyFolder
    heißt und ich mein anhängeString als

    VB.NET-Quellcode

    1. "###Folder###"
    festlege, soll mir jeder Ordner welcher
    in die Textdatei geschrieben wird um meinen String ergänzt werden, also wäre hier:

    Quellcode

    1. MyFolder###Folder###

    das Ergebnis.
    Für jede Datei/Ordner soll mir in der Txt-Datei in eine neue Zeile geschrieben werden, und für die Ordner halt der Ordnername + Anhängestring...

    @FreakJNS hat mir bereits ein ähnliches Beispiel für eine ListBox gegeben, allerdings ist mir eingefallen anstatt die Einträge erst in ne ListBox zu laden und von da aus
    als Textdatei speichern unnötig ist.
    Deshalb würde ich sie gerne gleich speichern...
    C# Developer
    Learning C++
    Und wo ist dein Problem?
    Du erstellst eine Liste von DirectoryInfos/FileInfos und erweiterst diese Information über eine der beiden Klassen (welche ist im Grunde egal) um deinen String-Zusatz.
    Dann hast du eine Liste von ItemExtenders oder FileSystemInfoExt.

    Anschließend bereitest du alles zum schreiben in die Datei vor und durchläufst nun die Liste mit einer For-Schleife. Für jedes Listenelement schreibst du das, was die ToString-Methode zurückgibt in die Zeile. Streams schließen etc, und fertig.

    (Aufpassen: bei der FileSystemInfoExt-Klasse musst du die toString-methode natürlich noch überschreiben)