none
Größen von Dateien aus Ordnern anzeigen RRS feed

  • Frage

  • Hallo, Ich bekomme es einfach nicht hin in Visual Studio in der Sprache (VB) die Größen von Dateien in Ordner in einem ListView wiederzugeben. Ich nutze dazu das FolderBrowserDialog Mit ausgewälten Dateien aus dem OpenFileDialog geht es aber ich bekomme es nicht mit dem FolderBrowserDialog hin die Dateien aus dem ausgewählten Ordner die Größe anzeigen zu lassen. Kann mir da jemand helfen 
    Dienstag, 6. August 2013 19:55

Antworten

  • Hallo, arbeitest du mit VB (6 und frühere) oder mit VB.NET?

    Poste mal den Code, mit dem du es peim auswählen von einzelnen Dateien geschafft hast. Woran scheitert es denn momentan? Buildfehler, Runtimefehler, Steht einfach nichts in der LV?

    Wenn du mit VB.NET arbeitest, poste bitte auch ob du mit WinForms oder WPF arbeitest.

    Falls du mit VB.NET programmierst, der FolderBrowserDialog hat eine Eigenschaft SelectedPath. Diese beinhaltet den ausgewählten Pfad. Nun kannst du mithilfe von Directory.GetFiles() die Dateien im Ordner bestimmen. Das Array, welches du zurück bekommst, kannst du nun durchlaufen und jede Datei einzeln, wie im OpenFileDialog, verarbeiten.

    Dim fbd As New FolderBrowserDialog()
    If fbd.ShowDialog() = DialogResult.OK Then
    	Dim files As String() = Directory.GetFiles(fbd.SelectedPath, "*.*", SearchOption.TopDirectoryOnly)
    	For Each file As String In files
    'file enthält den Dateinamen Next End If
    Mit VB Classic enne ich mich dagegen nur sehr wenig aus. Um die Dateinamen zu bekommen kannst du mal hier hinein sehen. Der Rest sollte in etwa gleich laufen.



    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Dienstag, 6. August 2013 20:12
    Moderator

Alle Antworten

  • Hallo, arbeitest du mit VB (6 und frühere) oder mit VB.NET?

    Poste mal den Code, mit dem du es peim auswählen von einzelnen Dateien geschafft hast. Woran scheitert es denn momentan? Buildfehler, Runtimefehler, Steht einfach nichts in der LV?

    Wenn du mit VB.NET arbeitest, poste bitte auch ob du mit WinForms oder WPF arbeitest.

    Falls du mit VB.NET programmierst, der FolderBrowserDialog hat eine Eigenschaft SelectedPath. Diese beinhaltet den ausgewählten Pfad. Nun kannst du mithilfe von Directory.GetFiles() die Dateien im Ordner bestimmen. Das Array, welches du zurück bekommst, kannst du nun durchlaufen und jede Datei einzeln, wie im OpenFileDialog, verarbeiten.

    Dim fbd As New FolderBrowserDialog()
    If fbd.ShowDialog() = DialogResult.OK Then
    	Dim files As String() = Directory.GetFiles(fbd.SelectedPath, "*.*", SearchOption.TopDirectoryOnly)
    	For Each file As String In files
    'file enthält den Dateinamen Next End If
    Mit VB Classic enne ich mich dagegen nur sehr wenig aus. Um die Dateinamen zu bekommen kannst du mal hier hinein sehen. Der Rest sollte in etwa gleich laufen.



    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Dienstag, 6. August 2013 20:12
    Moderator
  •     Public Function roundandreturnfilesize(ByVal size As Double)
                   Select Case size
                Case Is < 1000
                    If size > 0 Then
                        Return Math.Round(size, 2).ToString & " B"
                    Else
                        Return Math.Round(size, 2).ToString & ""
                    End If
                Case Is < 1000000
                    Return Math.Round((size / 1000), 2).ToString & " KB"
                Case Is < 1000000000
                    Return Math.Round((size / 1000000), 2).ToString & " MB"
                Case Is < 1000000000000
                    Return Math.Round((size / 1000000000), 2).ToString & " GB"
                Case Is < 1000000000000000
                    Return Math.Round((size / 1000000000000), 2).ToString & " TB"
                Case Is < 1000000000000000000
                    Return Math.Round((size / 1000000000000000), 2).ToString & " PB"
                Case Else
                    Return ""
            End Select
        End Function
    
        Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
            Try
    
                Dim file As String
                For Each file In OpenFileDialog1.FileNames
                    Dim infoReader As System.IO.FileInfo
                    infoReader = My.Computer.FileSystem.GetFileInfo(file)
    
                    With ListView1.Items.Add(IO.Path.GetFileNameWithoutExtension(file))
    
                        .SubItems.Add(roundandreturnfilesize(infoReader.Length))
                        If TextBox1.Text = "" Then
                            TextBox1.Text = infoReader.Length
                        Else
                            TextBox1.Text = TextBox1.Text + infoReader.Length
                        End If
    
                        .SubItems.Add(IO.Path.GetExtension(file))
                        .SubItems.Add(IO.Path.GetFullPath(file))
                        .SubItems.Add(IO.File.GetCreationTime(file))
                        .SubItems.Add(IO.File.GetLastWriteTime(file))
                        .SubItems.Add(IO.Path.GetPathRoot(file))
                        Label4.Text = ListView1.Items.Count
                        Label6.Text = roundandreturnfilesize(TextBox1.Text)
    
    
                    End With
                Next file
    
    
    
    
    
    
    
    
    
    
            Catch ex As Exception
                MsgBox(Err.Description)
            End Try
        End Sub



    • Bearbeitet Tobpy Mittwoch, 7. August 2013 10:13
    Mittwoch, 7. August 2013 10:12