Avatar billede aero Nybegynder
28. september 2008 - 23:07 Der er 13 kommentarer og
1 løsning

vis kun et drev eller submapper, denne kode virker med alle drev.

Jeg har en gammel ASP.Net 2.0 bog hvor jeg har lavet dette eks. jeg kan bare ikke se i bogen hvordan jeg lavet en drev liste for KUN et drev evt. Drev C.
Og kan heller ikke se hvordan jeg kan lave en mappe liste af undermapper for evt en mappe og ikke et drev evt. C:/test/

min kode er flg. som virker, den viser alle drev/str. og fri plads på drevet samt mapper/submapper på de forskellige drev.

.:: Showdriveandfilesinit.aspx ::.
<%@ Page Language="VB" AutoEventWireup="true" CodeFile="Showdriveandfilesinit.aspx.vb" Inherits="file_and_folderVB" title="Untitled Page" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Lokal System Drev</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table>
            <tr>
                <td style="width: 100px" valign="top">
                    <asp:TreeView ID="TreeView1" runat="server"></asp:TreeView>
                </td>
            </tr>
        </table>
    </div>
    </form>
</body>
</html>

.:: Showdriveandfilesinit.aspx.vb ::.
Partial Public Class file_and_folderVB
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        For Each drive As System.IO.DriveInfo In System.IO.DriveInfo.GetDrives()

            Dim node As TreeNode = New TreeNode()
            node.Value = drive.Name

            ' Sørger for at drevet er klar, før adgang til det
            If (drive.IsReady) Then
                node.Text = drive.Name & " - (Fri Lagerplads: " & drive.AvailableFreeSpace & ") Af ialt (" & drive.TotalSize & ")"
                LoadDirectories(node, drive.Name)
            Else
                node.Text = drive.Name & " - (Ikke klar)"
            End If

            Me.TreeView1.Nodes.Add(node)
        Next

        Me.TreeView1.CollapseAll()
    End Sub

    Private Sub LoadDirectories(ByVal parent As TreeNode, ByVal path As String)

        Dim directory As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(path)
        Try
            For Each d As System.IO.DirectoryInfo In directory.GetDirectories

                Dim node As TreeNode = New TreeNode(d.Name, d.FullName)
                parent.ChildNodes.Add(node)

                'Vis det aktuelle drev/mapper/filer
                LoadDirectories(node, d.FullName)
            Next
        Catch ex As System.UnauthorizedAccessException
            parent.Text += " (Adgang nægtet)"
        Catch ex As System.IO.IOException
            parent.Text += " (Ukendt Fejl: " + ex.Message + ")"
        End Try
    End Sub

End Class
Avatar billede arne_v Ekspert
28. september 2008 - 23:27 #1
Kun C: må være at erstatte

For Each drive As System.IO.DriveInfo In System.IO.DriveInfo.GetDrives()

med

Dim drive As DriveInfo = new DriveInfo("C:")
Avatar billede arne_v Ekspert
28. september 2008 - 23:28 #2
Kun 1 dir må være at erstatte

LoadDirectories(node, drive.Name)

med

LoadDirectories(node, Path.Combine(drive.Name, "test"))
Avatar billede aero Nybegynder
29. september 2008 - 00:00 #3
mange tak igen..
lige en sidste ting hvis du vil lægge et svar så gør det venligst så du kan få point, og så tankte jeg på hvordan min LoadFiles ville se ud hvis den også skulle kunne vise fil navne som den nu gør med mappe navne og hvad hvis jeg kun vil have vist gif og png billeder !?
Avatar billede arne_v Ekspert
29. september 2008 - 00:16 #4
DirectoryInfo har udover GetDirectory metoden også en GetFiles metode.

Den har sågar en overload som tager et pattern !

Så:

For Each f As System.IO.FileInfo In directory.GetFiles("*.jpg")
  ' f.Name indeholder filnavn
Next
Avatar billede arne_v Ekspert
29. september 2008 - 00:27 #5
Hvorfor importerer du ikke System.IO ?
Avatar billede arne_v Ekspert
29. september 2008 - 00:27 #6
og et svar
Avatar billede aero Nybegynder
29. september 2008 - 00:34 #7
er det rigtigt forstået at jeg laver en Sub som minder lidt om
Private Sub LoadDirectories(ByVal parent As TreeNode, ByVal path As String)

som evt. bare hedder LoadFiles og som så bruger GetFiles og så i min Page_Load sub under LoadDirectories(node, drive.Name) der smider jeg en
LoadFiles(node, Files.Name) ind og så burde den virke !??

Jeg vil også bruge System.IO som Imports men ville lige finde ud af hvordan det virkede før jeg omskriver det eller gør koden mindre....

Hvad nu hvis det drejer sig om du tyder filer jeg vil vise og ikke kun .jpg filer !??
Avatar billede arne_v Ekspert
29. september 2008 - 01:39 #8
Nej. Du skal kalde GetFiles i samme kode som kalder GetDirectories.

"du tyder filer" ??
Avatar billede aero Nybegynder
29. september 2008 - 12:18 #9
beklager

Hvad nu hvis det drejer sig om to typer filer jeg vil vise og ikke kun .jpg filer !??
Avatar billede aero Nybegynder
29. september 2008 - 12:20 #10
så jeg laver noget med GetFiles i en try som jeg sætter ind her ******
        Try
            For Each d As System.IO.DirectoryInfo In directory.GetDirectories

                Dim node As TreeNode = New TreeNode(d.Name, d.FullName)
                parent.ChildNodes.Add(node)

                'Vis det aktuelle drev/mapper/filer
                LoadDirectories(node, d.FullName)
               
                ******
                Try MED GETFILES.......
                End Try
                ******

            Next
        Catch ex As System.UnauthorizedAccessException
            parent.Text += " (Adgang nægtet)"
        Catch ex As System.IO.IOException
            parent.Text += " (Ukendt Fejl: " + ex.Message + ")"
        End Try
Avatar billede arne_v Ekspert
30. september 2008 - 04:29 #11
Med 2 typer filer så kalder du bare GetFiles 2 gange.
Avatar billede aero Nybegynder
30. september 2008 - 13:57 #12
ok og er det rigtigt det jeg vil gøre med den ekstra try !?
Avatar billede arne_v Ekspert
01. oktober 2008 - 03:01 #13
Hvis du gerne vil kunne håndtere en fejl uden at ryge ud i en af de eksisterende Catch, så ja !
Avatar billede aero Nybegynder
09. oktober 2008 - 18:38 #14
kan ikke få det til at virke med det fil værk, kun mapper som det gør, nu men tak alligevel må nok oprette et spm. omkring det med visning af filer i mapper/sub mapper..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester