1 file uit map halen

Status
Niet open voor verdere reacties.

Pitje1958

Gebruiker
Lid geworden
22 okt 2007
Berichten
65
Is het mogelijk om het éérste bestand uit een bepaalde map te halen en die dan te verwerken en nadien deze ook te verwijderen in de map waaruit ik hem gehaald heb zodat dan de volgende file als eerste komt te staan. Ik weet wel hoe ik een hele map moet gaan inlezen maar wil het bestand per bestand nu doen.


Dank bij voorbaat.
 
Wat bedoel je met het eerste bestand? Als ik op naam sorteer, is het bovenste (eerste) bestand anders dan als ik sorteer op grootte...
 
1ste bestand uit map

Wat bedoel je met het eerste bestand? Als ik op naam sorteer, is het bovenste (eerste) bestand anders dan als ik sorteer op grootte...


In een map komen allemaal tekstfiles te staan volgens tijd. Ik zou willen dat telkens 1 bestand gekopieerd wordt naar een andere map waaruit dan de tekstfile verwerkt word.
Ik kan nu wel alle bestanden in één keer uit de map halen maar het zou file per file moeten zijn.


Bedankt al voor je reactie.
 
Deze code haalt de bestanden uit een map en als er geen bestanden in de lijst staan, voegt het automatisch het bestandspath toe, anders vergelijkt het de datum van het bestand in de lijst met het volgende bestand in de map. Wanneer deze later is gemaakt, wordt de lijst gewist en het nieuwe bestandspath komt erin. Ik hoop dat dit is wat je wou :D

Code:
Imports System.IO

Public Class frmMain

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim lst As New List(Of String)

        For Each strFile As String In Directory.GetFiles("C:\")
            If lst.Count > 0 Then
                Dim fInfo As New FileInfo(lst.Last)
                Dim oInfo As New FileInfo(strFile)
                Dim fTime As Date = fInfo.CreationTime
                Dim oTime As Date = oInfo.CreationTime
                Dim Dif As Integer = DateDiff(DateInterval.Second, fTime, oTime)

                If Dif > 0 Then
                    lst.Clear()
                    lst.Add(strFile)
                End If
            Else
                lst.Add(strFile)
            End If
        Next
    End Sub
End Class
 
Deze code haalt de bestanden uit een map en als er geen bestanden in de lijst staan, voegt het automatisch het bestandspath toe, anders vergelijkt het de datum van het bestand in de lijst met het volgende bestand in de map. Wanneer deze later is gemaakt, wordt de lijst gewist en het nieuwe bestandspath komt erin. Ik hoop dat dit is wat je wou :D

Code:
Imports System.IO

Public Class frmMain

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim lst As New List(Of String)

        For Each strFile As String In Directory.GetFiles("C:\")
            If lst.Count > 0 Then
                Dim fInfo As New FileInfo(lst.Last)
                Dim oInfo As New FileInfo(strFile)
                Dim fTime As Date = fInfo.CreationTime
                Dim oTime As Date = oInfo.CreationTime
                Dim Dif As Integer = DateDiff(DateInterval.Second, fTime, oTime)

                If Dif > 0 Then
                    lst.Clear()
                    lst.Add(strFile)
                End If
            Else
                lst.Add(strFile)
            End If
        Next
    End Sub
End Class

[COLOR="Red"]I.P.V. een lst zou deze file dan naar een andere map moeten gekopieerd worden, is dat mogelijk? De strfile word gevuld zie ik   strFile (e1255978.dat)[/COLOR]Bedankt voor je reactie l.


Groeten 

Pitje
 
O ja, ben de IO.File.Copy vergeten :shocked: Hier is de volledige sub die het laatst aangemaakte bestand in de map C:\test naar C:\test_2 kopieërt (voor verplaatsen, gebruik File.Move):

Code:
Imports System.IO

Public Class frmMain

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CopyFile("C:\test", "C:\test_2")
    End Sub

    Private Sub CopyFile(ByVal OldDirectory As String, ByVal NewDirectory As String)
        Dim lst As New List(Of String)

        For Each strFile As String In Directory.GetFiles(OldDirectory)
            If lst.Count > 0 Then
                Dim fInfo As New FileInfo(lst.Last)
                Dim oInfo As New FileInfo(strFile)
                Dim fTime As Date = fInfo.CreationTime
                Dim oTime As Date = oInfo.CreationTime
                Dim Dif As Integer = DateDiff(DateInterval.Second, fTime, oTime)

                If Dif > 0 Then
                    lst.Clear()
                    lst.Add(strFile)
                End If
            Else
                lst.Add(strFile)
            End If
        Next

        Dim lFileInfo As New FileInfo(lst.Last)
        File.Copy(lFileInfo.FullName, GetSlashPath(NewDirectory) & lFileInfo.Name, True)
    End Sub

    Private Function GetSlashPath(ByVal Path As String) As String
        If Path.EndsWith("\") Then
            Return Path
        Else
            Return Path & "\"
        End If
    End Function
End Class
 
O ja, ben de IO.File.Copy vergeten :shocked: Hier is de volledige sub die het laatst aangemaakte bestand in de map C:\test naar C:\test_2 kopieërt (voor verplaatsen, gebruik File.Move):

Code:
Imports System.IO

Public Class frmMain

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CopyFile("C:\test", "C:\test_2")
    End Sub

    Private Sub CopyFile(ByVal OldDirectory As String, ByVal NewDirectory As String)
        Dim lst As New List(Of String)

        For Each strFile As String In Directory.GetFiles(OldDirectory)
            If lst.Count > 0 Then
                Dim fInfo As New FileInfo(lst.Last)
                Dim oInfo As New FileInfo(strFile)
                Dim fTime As Date = fInfo.CreationTime
                Dim oTime As Date = oInfo.CreationTime
                Dim Dif As Integer = DateDiff(DateInterval.Second, fTime, oTime)

                If Dif > 0 Then
                    lst.Clear()
                    lst.Add(strFile)
                End If
            Else
                lst.Add(strFile)
            End If
        Next

        Dim lFileInfo As New FileInfo(lst.Last)
        File.Copy(lFileInfo.FullName, GetSlashPath(NewDirectory) & lFileInfo.Name, True)
    End Sub

    Private Function GetSlashPath(ByVal Path As String) As String
        If Path.EndsWith("\") Then
            Return Path
        Else
            Return Path & "\"
        End If
    End Function
End Class


Duizend maal bedankt,


Groeten

Pitje
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan