A través del File System Object o Modelo de Objetos del Sistema de Archivos es posible manipular (crear, modificar, mover y eliminar) directorios y archivos, así como también obtener información de las mismos. Lo más importante es el poder manipular datos en estas estructuras.
Este modelo de objetos se encuentra contenido en una biblioteca de tipos llamada Scripting
(Scrrun.dll), la cual permite la manipulación de archivos de texto mediante el objeto TextStream
aunque para manipular archivos binarios se utiliza el comando Open
con el indicador Binary
.
Este Modelo de objetos tiene los siguientes objetos:
- Drive
- Folder
- Files
- FileSystemObject
- TextStream
Para utilizar este Modelo es necesario:
- Utilizar el método
CreateObject
o dimensionar una variable como objeto tipoFileSystemObject
y crear un objeto.Set fso = CreateObject("Scripting.Objeto_FileSystemObject")
Dim fso As New FileSystemObject
- Utilizar el método adecuado en el objeto creado.
- Es necesario tener acceso a las propiedades del objeto.
Nota: Este Modelo de objetos es redundante, es decir, los siguientes escenarios tienen el mismo objetivo:
- Copiar un archivo utilizando el método
CopyFile
del ObjetoFileSystemObject
- Copiar un archivo utilizando el método
Copy
del objetoFile
Las siguientes constantes son utiles para los argumentos la manipular objetos FSO:
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 3
Const TristateUseDefault = -2
Const TristateTrue = -1
A través de este objeto es posible obtener información de las unidades lógicas, el espacio que tienen libre, o si son unidades compartidas.
Set fsoTmp = fso.GetDrive(fso.GetDriveName(unidad.Drive))
MsgBox fsoTmp.VolumeName
MsgBox "Espacio total : " & FormatNumber(fsoTmp.TotalSize / 1024, 0) & "kb"
MsgBox "Espacio libre : " & FormatNumber(fsoTmp.FreeSpace / 1024, 0) & "kb"
A través de este objeto es posible crear, eliminar o mover directorios, también es posible obtener la ruta y nombres de estos.
Crear directorio:
Private Sub cmdMakeDir_Click()
fso.CreateFolder ("c:\" & txtDir)
End Sub
¿Existe el directorio o se creo?
Set fsoTmp = fso.GetFolder("c:\" & txtDir)
If fso.FolderExists(fsoTmp) Then
MsgBox "Existe"
Else
MsgBox "No existe"
End If
A través de este objeto es posible crear, eliminar o mover archivos, también es posible obtener la ruta y nombres de estos.
Abrir un archivo:
Set fsoTmp = fso.CreateTextFile("c:\" & txtDir & "\" & txtFile, True)
Set fsoTmp = fso.OpenTextFile("c:\" & txtDir & "\" & txtFile, 2)
Set fsoTmp = fso.GetFile("c:\" & txtDir & "\" & txtFile)
Set fsoX = fsoTmp.OpenAsTextStream(2, -2)
Escribir datos en un archivo:
Set fsoTmp = fso.GetFile("c:\" & txtDir & "\" & txtFile)
Set fsoX = fsoTmp.OpenAsTextStream(2, -2)
fsoX.Write (txtData) 'Escribe una línea
fsoX.WriteLine (txtData2) 'Escribe una linea con un caracter de nueva línea
fsoX.WriteBlankLines (5) 'Escribe 5 caracteres de nueva línea
fsoX.Close
Leer datos de un archivo:
Set fsoTmp = fso.GetFile("c:\sol\test.txt")
Set fsoX = fso.GetFile("c:\sol\test.txt").OpenAsTextStream(ForReading)
txtFileData = fsoX.ReadLine
fsoX.Close
Objeto primordial, el cual permite crear, eliminar y obtener información, además de controlar unidades, directorios y archivos.
Set fso = CreateObject("Scripting.FileSystemObject")
A través de este objeto es posible leer y escribir archivos de texto.
Visual Basic tiene 3 tipos de acceso a archivos:
- Secuencial, lee y escribe archivos de texto en bloques continuos.
Es posible abrir un archivo para acceso secuencial para realizar las siguientes tareas:
- Leer caracteres desde un archivo (
Input
) - Escribir caracteres a un archivo (
Output
) - Agregar caracteres a un archivo (
Append
)
Si utiliza
Input
el archivo debe existir o de lo contrario se produce un error.Si utiliza
Output
oAppend
la instrucción Open primero crea el archivo y después lo abre.Una vez que el archivo fué abierto con
Input
,Output
oAppend
es necesario cerrarlo con la instrucción Close. - Leer caracteres desde un archivo (
- Aleatorio, lee y escribe archivos binarios de texto o estructurados como registros de longitud fija.
- Binario, lee y escribe archivos estructurados de forma arbitraria.
El código que se presenta a continuación, espera que el usuario capture el contenido para el archivo MsFileName
, y al dar clic en el botón [Write] almacena en el archivo MsFileName
el contenido del txtWrite
.
Al dar clic en el botón [Read Line], muestra la primer línea que contiene el archivo MsFileName
en txtRead
.
Al dar clic en el botón [Read By Line], lee el contenido del archivo MsFileName
línea por línea y lo muestra en txtLine
, además se indica el número de línea que se va leyendo.
Option Explicit
Dim MsPathName As String
Dim MsFileName As String
Dim MsAux As String
Private Sub Form_Load()
MsPathName = "C:\"
MsFileName = "FileName.txt"
sBar.SimpleText = "Type the content of the file"
End Sub
Private Sub cmdWrite_Click()
Open MsPathName & MsFileName For Output As #1
Write #1, txtWrite
Close #1
sBar.SimpleText = "The content was added"
End Sub
Private Sub cmdRead_Click()
Open MsPathName & MsFileName For Input As #1
Input #1, MsAux
Close #1
txtRead = MsAux
sBar.SimpleText = "Now you can see the content of the file"
End Sub
Private Sub cmdReadLine_Click()
Dim LsNextLine As String
Dim LnCount As Integer
LnCount = 1
Open MsPathName & MsFileName For Input As #1
Do Until EOF(1)
Line Input #1, LsNextLine
txtLine = txtLine & LnCount & " : " & LsNextLine & vbNewLine
LnCount = LnCount + 1
Loop
Close #1
End Sub
0 comentarios:
Publicar un comentario