VB.Net/File Directory/File

Материал из VB Эксперт
Перейти к: навигация, поиск

Change file attribute for *.*

<source lang="vbnet"> Imports System.IO Module Module1

   Sub ProcessTree(ByVal Dir As String)
       Dim DirObj As New DirectoryInfo(Dir)
       Dim Files As FileInfo() = DirObj.GetFiles("*.*")
       Dim Dirs As DirectoryInfo() = DirObj.GetDirectories("*.*")

       Dim Filename As FileInfo
       For Each Filename In Files
           Try
               If (Filename.Attributes And FileAttributes.ReadOnly) Then
                   Filename.Attributes = (Filename.Attributes And Not FileAttributes.ReadOnly)
               End If
           Catch E As Exception
               Console.WriteLine("Error changing attribute for {0}", Filename.FullName)
               Console.WriteLine("Error: {0}", E.Message)
           End Try
       Next
       Dim DirectoryName As DirectoryInfo
       For Each DirectoryName In Dirs
           Try
               ProcessTree(DirectoryName.FullName)
           Catch E As Exception
               Console.WriteLine("Error accessing {0}", DirectoryName.FullName)
               Console.WriteLine("Error: {0}", E.Message)
           End Try
       Next
   End Sub
   Sub Main()
       ProcessTree("C:\")
   End Sub

End Module


 </source>


Delete a file if exist

<source lang="vbnet"> Imports System Imports System.Windows.Forms Imports System.Collections.Generic Imports System.ruponentModel Imports System.Drawing.Imaging Imports System.Drawing Public Class MainClass

  Shared Sub Main()
       Dim file_name As String = "test.wmf"
       " Delete the file if it exists.
       If Len(Dir$(file_name)) > 0 Then Kill(file_name)
  End Sub 

End Class


 </source>


Delete *.Bak under a directory

<source lang="vbnet"> Imports System.IO Module Module1

   Sub DeleteFiles(ByVal Dir As String)
       Dim DirObj As New DirectoryInfo(Dir)
       Dim Files As FileInfo() = DirObj.GetFiles("*.bak")
       Dim Dirs As DirectoryInfo() = DirObj.GetDirectories("*.*")

       Dim Filename As FileInfo
       For Each Filename In Files
           Try
               File.Delete(Filename.FullName)
               Console.WriteLine("Deleted {0}", Filename.FullName)
           Catch E As Exception
               Console.WriteLine("Error deleting {0}", Filename.FullName)
               Console.WriteLine("Error: {0}", E.Message)
           End Try
       Next
       Dim DirectoryName As DirectoryInfo
       For Each DirectoryName In Dirs
           Try
               DeleteFiles(DirectoryName.FullName)
           Catch E As Exception
               Console.WriteLine("Error accessing {0}", DirectoryName.FullName)
               Console.WriteLine("Error: {0}", E.Message)
           End Try
       Next
   End Sub
   Sub Main()
       DeleteFiles("C:\")
   End Sub

End Module


 </source>


English File Size

<source lang="vbnet"> Public Class MainClass

   Public Shared Function ConvertBytes(ByVal Bytes As Long) As String
       If Bytes >= 1073741824 Then
           Return Format(Bytes / 1024 / 1024 / 1024, "#0.00") & " GB"
       ElseIf Bytes >= 1048576 Then
           Return Format(Bytes / 1024 / 1024, "#0.00") & " MB"
       ElseIf Bytes >= 1024 Then
           Return Format(Bytes / 1024, "#0.00") & " KB"
       ElseIf Bytes > 0 And Bytes < 1024 Then
           Return Fix(Bytes) & " Bytes"
       Else
           Return "0 Bytes"
       End If
   End Function
   Public Shared Sub Main()
       Dim objInfo As New System.IO.FileInfo("c:\a.dat")
       System.Console.WriteLine(ConvertBytes(objInfo.Length))
   End Sub

End Class


 </source>


File Information

<source lang="vbnet">

Imports System.IO Imports System.Windows.Forms <Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Class Form1

   Inherits System.Windows.Forms.Form
   <System.Diagnostics.DebuggerStepThrough()> _
   Private Sub InitializeComponent()
       Me.txtDisplay = New System.Windows.Forms.TextBox
       Me.cmdCreate = New System.Windows.Forms.Button
       Me.cmdChangeDate = New System.Windows.Forms.Button
       Me.cmdGetInfo = New System.Windows.Forms.Button
       Me.TextBox1 = New System.Windows.Forms.TextBox
       Me.SuspendLayout()
       "
       Me.txtDisplay.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                   Or System.Windows.Forms.AnchorStyles.Left) _
                   Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.txtDisplay.Location = New System.Drawing.Point(9, 79)
       Me.txtDisplay.Multiline = True
       Me.txtDisplay.ReadOnly = True
       Me.txtDisplay.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
       Me.txtDisplay.Size = New System.Drawing.Size(280, 168)
       Me.txtDisplay.TabIndex = 9
       "
       Me.cmdCreate.Location = New System.Drawing.Point(9, 39)
       Me.cmdCreate.Size = New System.Drawing.Size(88, 24)
       Me.cmdCreate.TabIndex = 8
       Me.cmdCreate.Text = "Create"
       "
       Me.cmdChangeDate.Location = New System.Drawing.Point(201, 39)
       Me.cmdChangeDate.Size = New System.Drawing.Size(88, 24)
       Me.cmdChangeDate.TabIndex = 7
       Me.cmdChangeDate.Text = "Change Date"
       "
       Me.cmdGetInfo.Location = New System.Drawing.Point(105, 39)
       Me.cmdGetInfo.Size = New System.Drawing.Size(88, 24)
       Me.cmdGetInfo.TabIndex = 6
       Me.cmdGetInfo.Text = "Get Info"
       "
       Me.TextBox1.Location = New System.Drawing.Point(9, 11)
       Me.TextBox1.Size = New System.Drawing.Size(280, 21)
       Me.TextBox1.TabIndex = 5
       Me.TextBox1.Text = "c:\myfile.txt"
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(298, 259)
       Me.Controls.Add(Me.txtDisplay)
       Me.Controls.Add(Me.cmdCreate)
       Me.Controls.Add(Me.cmdChangeDate)
       Me.Controls.Add(Me.cmdGetInfo)
       Me.Controls.Add(Me.TextBox1)
       Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
       Me.Name = "Form1"
       Me.Text = "Form1"
       Me.ResumeLayout(False)
       Me.PerformLayout()
   End Sub
   Friend WithEvents txtDisplay As System.Windows.Forms.TextBox
   Friend WithEvents cmdCreate As System.Windows.Forms.Button
   Friend WithEvents cmdChangeDate As System.Windows.Forms.Button
   Friend WithEvents cmdGetInfo As System.Windows.Forms.Button
   Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
   Private Sub cmdCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCreate.Click
       Try
           Dim MyFile As New FileInfo("c:\myfile.txt")
           MyFile.Create().Close()
           Out("File created.")
       Catch err As Exception
           Out(err.Message)
       End Try
   End Sub
   Private Sub cmdGetInfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGetInfo.Click
       Try
           Dim MyFile As New FileInfo("c:\myfile.txt")
           Out("Length in bytes: " & MyFile.Length)
           Out("Attribute list: " & MyFile.Attributes.ToString)
           Out("Stored in: " & MyFile.DirectoryName)
           Out("Created: " & MyFile.CreationTime)
       Catch err As Exception
           Out(err.Message)
       End Try
   End Sub
   Public Sub Out(ByVal NewText As String) " Utility for displaying information.
       txtDisplay.Text &= vbNewLine & NewText
       txtDisplay.SelectionStart = txtDisplay.Text.Length - 1
       txtDisplay.ScrollToCaret()
   End Sub
   Private Sub cmdChangeDate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdChangeDate.Click
       Try
           Dim MyFile As New FileInfo("c:\myfile.txt")
           MyFile.LastWriteTime = DateTime.Today.Add(TimeSpan.FromDays(100))
           Out("Time updated.")
       Catch err As Exception
           Out(err.Message)
       End Try
   End Sub

End Class


 </source>


File Time: created, last modified and accessed

<source lang="vbnet"> Imports System Imports System.IO Public Class MainClass

  Shared Sub Main()
        Dim fileName As String
        fileName = "test.vb"
        
     Console.WriteLine( fileName & " exists" )
     " output when file or directory was created
     Console.WriteLine("Created : " & File.GetCreationTime(fileName) )
     " output when file or directory was last modified
     Console.WriteLine("Last modified: " & _
        File.GetLastWriteTime(fileName) )
     " output when file or directory was last accessed
     Console.WriteLine("Last accessed: " & _
        File.GetLastAccessTime(fileName) )
  End Sub " Main

End Class



 </source>


Find Hidden File under a directory

<source lang="vbnet"> Imports System Imports System.IO Public Class MainClass

 Shared Sub Main()
  Dim myDirectory As DirectoryInfo
   myDirectory = New DirectoryInfo("C:\")
   Dim aFile As FileInfo
   For Each aFile In myDirectory.GetFiles
       If (aFile.Attributes And FileAttributes.Hidden) = FileAttributes.Hidden Then
           Console.WriteLine("FOUND hidden file named " & aFile.FullName)
       End If        
   Next
  End Sub
 

End Class


 </source>


Get Files under an Directory and print its Full Name and Length

<source lang="vbnet"> Imports System Imports System.IO Public Class MainClass

 Shared Sub Main()
  Dim myDirectory As DirectoryInfo
   myDirectory = New DirectoryInfo("C:\")
   Dim aFile As FileInfo
   For Each aFile In myDirectory.GetFiles
       Console.WriteLine("The file named " & aFile.FullName & _
       " has length " & aFile.Length)
   Next
  End Sub
 

End Class


 </source>


Get Invalid File Name Chars

<source lang="vbnet"> Imports System Imports System.IO Imports System.Windows.Forms Public Class MainClass

  Shared Sub Main()
       For Each ch As Char In Path.GetInvalidFileNameChars()
           Console.Write(ch & " ")
       Next ch
  End Sub 

End Class


 </source>


Is it a File or a Directory

<source lang="vbnet"> Imports System Imports System.IO Public Class MainClass

  Shared Sub Main()
        Dim fileName As String
        fileName = "test.vb"
        
        If File.Exists(fileName) Then
           Console.WriteLine( "File")
        ElseIf Directory.Exists(fileName) Then
           Console.WriteLine( "Directory")
        Else
           Console.WriteLine( "File for dir does not exist")
        End If
  End Sub " Main

End Class



 </source>


Update file create time, last access time and last write time

<source lang="vbnet"> Imports System.IO Module Module1

   Sub Main()
      Try
          Dim FileObj As New FileInfo("test.dat")
          FileObj.CreationTime = DateTime.Now
          FileObj.LastAccessTime = DateTime.Now
          FileObj.LastWriteTime = DateTime.Now
          Console.WriteLine("test.dat date and time updated")
      Catch Ex As Exception
          Console.WriteLine("Error updating test.dat  " & Ex.Message)
      End Try
   End Sub

End Module


 </source>