Introduction
This article is based on a pre-release version of Microsoft Visual Studio 2005, formerly code-named "Whidbey." All information contained herein is subject to change.
This article discusses:
- File System Management and its uses
- File Permissions
- File modes, File Access, File Shares
This article uses the following technologies : VB.NET and Windows Forms
File Management in Whidbey/VB.NET the beating heart of the technologies that comprise Windows Forms. This article explains various file management operations such as read or write, retrieving properties or setting the properties or copy or move a file using the Whidbey/Visual Studio.NET environment. I hope this will helpful to understand the operation of managing a file.
System.IO
namespace
The input/output operation of file management is handled by the classes in the System.IO.namespace
. The System.IO.namespace
supports the following activities:
- Reading and writing to binary files, text files etc.
- Reading and writing to data streams
- Basic file support
- Directory support
- Memory streams
- Network streams
You have to include this namespace to your project.
Classes that supports System.IO
namespace
The following classes will support System.IO namespace
in VB.NET.
- The class
BinaryReader
used for Reads primitive data types as binary values. Primitive data types are those that are not defined in terms of other data types. Because primitive data types are the basis for all other types, they cannot have element content or attributes. Examples of primitive data types are string
, float
, decimal
, anyURI
, and QName
.
Usage:
Dim objBinReader as New BinaryReader(File.Open _
("C:\mysamplefile.txt", FileMode.Open))
- The class
BinaryWriter
used for writes primitive data types as binary values to a stream.
Usage:
Dim objBinWriter as New BinaryWriter(File.Open _
("C:\mysamplefile.txt", FileMode.Create))
- The class
BufferedStream
used for buffering to another stream for read and write operations.
Usage:
Dim objNetStream as New NetworkStream(ClientSocket, True)
Dim objBufStream as New _
BufferedStream(objNetStream, _
intStreamBufferSize)
Note: The NetworkStream
class provides methods for sending and receiving data over Stream sockets in blocking mode
- The class
Directory
used for creating, copying, moving, deleting and renaming directories and sub directories. The Directory
class includes the System.IO
namespace.
Some of the public methods used for Directory class is described as follows.
CreateDirectory
– Creates a new directory in a specified path.
Delete
- Delete the directory from the specified path
Exists
– Checks whether the associated directories exists in the specific path.
GetCreationTime
– Get the creation time of directory
GetCreationTimeUtc
– Get the creation time in universal coordinated time
GetCurrentDirectory
– Get the current working directory of the application
GetDirectories
– Gets the name of subdirectories in the working folder
GetDirectoryRoot
– Get root and volume information for the specified path
GetFiles
- Get or returns all the files listed in the specified directory.
GetFileSytemEntries
- Get or returns all the files and sub directories listed in the specified directory.
GetLastAccessTime
– Last access date and time of the specified directory
GetLastAccessTimeUtc
– Last access date and time of the specified directory in universal coordinator time (UTC) format.
GetLastWriteTime
– Last written date and time of a specified directory.
GetLastWriteTimeUtc
– Last written date and time of a specified directory in universal coordinator time (UTC).
GetLogicalDrives
– Get all the logical drives on the computer.
GetParent
– Get the absolute and relative path of the parent directory.
Move
– Move the specific directory to another location
SetCreationTime
– Sets the creation date and time for the specified directory or file.
SetCreationTimeUtc
– Sets the creation date and time for the specified directory or file in universal coordinated time format.
SetCurrentDirectory
– Sets the current directory to a specified directory in an application path.
SetLastAccessTime
- Sets the last access date and time for the specified directory or file.
Usage:
Dim strMyPath as String = "C:\mySample"
If Directory.Exists(strMyPath) = True then
Directory.Delete(strMyPath)
Else
Directory.CreateDirectory (strMyPath)
End if
- The class
DirectoryInfo
used the same functionality as Directory
class except if you are not going to reuse an object several times.
- The class
DirectoryNotFoundException
throws exception error when the file or directory not found in the specified path.
- The class
EndOfStreamException
throws exception error at the past the end of a stream.
- The class
ErrorEventArgs
provides data for Error event.
Usage:
Dim strMyPath as String = "C:\mySample"
Dim objException as New Exception("Cannot create Directory")
Dim objErrorEventArgs as New ErrorEventArgs(objException)
If Directory.Exists(strMyPath) = True then
Directory.Delete(strMyPath)
Else
Directory.CreateDirectory (strMyPath)
End if
Dim objReturnedException as Exception= objErrorEventArgs.GetException()
If objReturnedException.Message <> "" then
MessageBox.Show(objReturnedException.Message
End if
End Sub
- The class
File
provides to manage the file manipulation operations such as Creating, Opening, Deleting, Copying and Moving of files using FileStream
objects. File
class methods are static.
Some of the Public
Methods used with File
class is as follows:
AppendText
Copy
Create
CreateText
Delete
Exists
GetAttributes
GetCreationTime
GetCreationTimeUtc
GetLastAccessTime
GetLastAccessTimeUtc
GetLastWriteTime
Move
Open
OpenRead
OpenText
OpenWrite
SetAttributes
SetCreationTime
SetCreationTimeUtc
SetLastAccessTime
SetLastAccessTimeUtc
SetLastWriteTime
SetLastWriteTimeUtc
Usage:
Try
Dim strMyPath As String="C:\Benoy\temp.txt"
Dim strMyCopyPath As String = _
"C:\Benoy\temp1.txt"
Dim objFS As FileStream = _ File.Create(strMyPath)
objFS.Close
File.Copy(strMyPath,strMyCopyPath
File.Delete(strMyPath)
Catch
MessageBox.Show("Error in File Operation")
End Try
- The class
FileInfo
provides the same file management operation as in File
class such as Creating, Opening, Deleting, Copying and Moving of files using FileStream
objects, except if you are not reusing the object several times because the security check is not always necessary.
- The class
FileLoadException
throws exception error if any error occurs during File Load.
Some of the public methods used with this class are shown below:
FileName
– The associated filename that causes exception.
FusionLog
– Get the log file.
HelpLink
- Help Link association during exception error.
InnerException
– An inner exception that caused the current exception.
Message
- Exception Error Message.
Source
– Error Source.
StackTrace
– The associated string representation of the frames on the call stack.
TargetSite
– The associated method name that causes exception.
- The
FileNotFoundException
class throws the exception error when the associated file is not found in the specified path or invalid disk access. The public methods are same as FileLoadException
class.
- The
FileStream
class supports to read, write, open and close the file management operations as well as it supports to manage the operating system file operations such as pipes, standard input and output.
- The
FileSystemEventArgs
class provides data for the directory events as shown below.
Changed
event handler fires the properties or security details such as size, system attributes, last write time, last access time, whenever a file is changed or updated.
Created
event handler fires whenever a directory or file created in a specified path.
Deleted
event handler fires whenever a file or directory is deleted from the specified path.
- The
FileSystemInfo
class supports the public methods which you can use for both files and directory in the specified path, which serving as the basis for two objects such as FileInfo
and DirectoryInfo
, which we understand from above.
- The
FileSystemWatcher
class allows to notify or fires any changes occurs in the file system or directory such as a file or directory changed, deleted or created.
The figure 1 shows the NotifyFilter
properties, that you can use to watch the notifications.
Figure 1 - NotifyFilter
Properties
Usage:
Try
Dim objFileSystemWatcher as New _ FileSystemWatcher()
objFileSystemWatcher.NotifyFilter= (NotifyFilters.LastWrite Or _
NotifyFilters.LastAccess Or NotifyFilters.FileName Or _
NotifyFilters.DirectoryName Or NotifyFilters.FileName Or _
NotifyFilters.CreationTime)
objFileSystemWatcher.Filter = "*.doc"
AddHandler objFileSystemWatcher.Changed, AddressOf OnChanged
AddHandler objFileSystemWatcher.Created, AddressOf OnCreated
AddHandler objFileSystemWatcher.Deleted, AddressOf OnChanged
AddHandler objFileSystemWatcher.Renamed, AddressOf OnChanged
objFileSystemWatcher.EnableRaisingEvents=True
Private Shared Sub OnChanged(ByVal source As Object, _
ByVal e As FileSystemEventArgs)
MessageBox.Show("File: " & e.FullPath & " " & e.ChangeType)
End Sub
Private Shared Sub OnCreated(ByVal source As Object, _
ByVal e As RenamedEventArgs)
MessageBox.Show("File: {0} renamed to {1}", _
e.OldFullPath, e.FullPath)
Catch
MessageBox.Show("Error in File Operation")
End Try
- The
InternalBufferOverFlowException
class throws exception when the buffer overflows during execution of the programs. It supports some of the public methods as shown in the FileLoadException
class except FusionLog
and FileName
, which you saw above.
- The
IOException
class throws exception when Input/Output error occurs. . It supports some of the public methods as shown in the FileLoadException
class except FusionLog
and FileName
, which you saw above.
- The
MemoryStream
class creates streams that have memory as an array instead of a disk or any storage media. It can reduce the need for temporary buffers and files in an application.
Usage:
Try
Dim objMemoryStream as New MemoryStream(200)
Dim objUnicodeEncoding As New UnicodeEncoding()
Dim strMyText As Byte() = _
objUnicodeEncoding.GetBytes( _
"File Management using Whidbey/VB.NET")
objMemoryStream.Write(strMyText, 0 , strMyText.Length)
MessageBox.Show(" _
"Capacity = {0}, " _
"Length = {1}, " _
"Position = {2}", _
objMemoryStream.Capacity.ToString(), _
objMemoryStream.Length.ToString(), _
objMemoryStream.Position.ToString())
Catch
MessageBox.Show("Error in File Operation")
End Try
- Other class members for this namespaces are
Path
PathTooLongException
RenamedEventArgs
Stream
StreamReader class
StreamWriter
StringReader
StringWriter
TextReader
TextReader
System.Security.Permissions
The enumeration to get or set file permissions in VB.net is called FileIOPermissionAccess
enumerations, which used with the FileIOPermission
class. The system namespace used for this enumeration is System.Security.Permissions
namespace, which implements IUnrestrictedPermission
interface, which defines classes that control access to operations and resources based on permission policy.
Classes that supports System.Security.Permissions
The following classes will support System.Security.Permissions
in VB.NET.
CodeAccessSecurityAttribute
EnvironmentPermission
EnvironmentPermissionAttribute
FileDialogPermission
FileDialogPermissionAttribute
FileIOPermission
FileDialogPermission
FileIOPermissionAttribute
IsolatedStorageFilePermission
IsolatedStorageFilePermissionAttribute
IsolatedStoragePermission
IsolatedStoragePermissionAttribute
PermissionSetAttribute
PrincipalPermission
PrincipalPermissionAttribute
PublishedIdentityPermission
PublishedIdentityPermissionAttribute
ReflectionPermission
ReflectionPermissionAttribute
RegistryPermission
RegistryPermissionAttribute
ResourcePermission
ResourcePermissionEntry
SecurityAttribute
SecurityPermission
SecurityPermissionAttribute
SiteIdentityPermission
SiteIdentityPermissionAttribute
StrongNameIdentityPermission
StrongNameIdentityPermissionAttribute
StrongNamePublicKeyBlob
UIPermission
UIPermissionAttribute
UrlIdentityPermission
UrlIdentityPermissionAttribute
ZoneIdentityPermission
ZoneIdentityPermissionAttribute
Mode, Share and Access of Files
FileMode
FileMode
parameter control has the following members:
Append
– Append to an existing file or create a new file if the file not exists
Create
- Create a new file
Open
– Open the file
OpenCreate
- Open a file if exists or it will create a file
Truncate
– Remove all the contents so that its size is zero bytes
Example:
Dim objStreamReader As New
StreamReader("C:\benoy\Mytext.txt")
MessageBox.Show(objStreamReader.ReadToEnd()
objStreamReader.Close()
FileShare
FileShare
enumeration allows you to control the share permission to access the FileStreams.
Some of the members included in the FileShare
enumerations are Read, ReadWrite, Write, None, Inheritable
etc.
Read
command allows you to opening the file for reading.
ReadWrite
command allows you to opening the file for reading and writing.
Write
command allows you to opening the file for writing.
Dim objFileStream As New
FileStream("C:\benoy\Mytext.txt", _
FileMode. OpenOrCreateOpen,
FileAccess.ReadWrite,
FileShare.ReadWrite)
FileAccess
FileAccess
enumeration allows you to control the permission to access the FileStreams.
Some of the members included in the FileAccess
enumerations are Read, ReadWrite, Write
etc.
Conclusion
In this article, we found how to manage windows file operations using different file level operation commands. It allows you to set file permissions, modes, access and sharing of files using VB.NET environment.
- File System Management and its uses
- File Permissions
- File modes, File Access, File Shares
Binoy is a software developer of Information Technology Division in Memphis,TN.