Banderas de apertura de archivos

Estos son los valores de banderas que determinan el modo de manejar un archivo. Las banderas están determinadas como sigue:

Identificador

Valor

Descripción

FILE_READ

1

Archivo se abre para la lectura. La bandera se usa cuando un archivo se abre, en la función (FileOpen()). Cuando abrimos un archivo, es obligatorio indicar la bandera FILE_WRITE y/o la bandera FILE_READ.

FILE_WRITE

2

Archivo se abre para la escritura. La bandera se usa cuando un archivo se abre, en la función (FileOpen()). Cuando abrimos un archivo, es obligatorio indicar la bandera FILE_WRITE y/o la bandera FILE_READ.

FILE_BIN

4

Modo binario de lectura-escritura (sin conversión de una cadena y en una cadena). La bandera se usa cuando un archivo se abre, en la función (FileOpen())

FILE_CSV

8

Archivo del tipo csv (todos sus elementos se convierten a las cadenas del tipo correspondiente, unicode o ansi, y se separan con un delimitador). La bandera se usa cuando un archivo se abre, en la función (FileOpen())

FILE_TXT

16

Archivo de texto simple (igual que el archivo csv pero sin tomar en cuenta los delimitadores). La bandera se usa cuando un archivo se abre, en la función (FileOpen())

FILE_ANSI

32

Cadenas del tipo ANSI (símbolos de un byte). La bandera se usa cuando un archivo se abre, en la función (FileOpen())

FILE_UNICODE

64

Cadenas del tipo UNICODE (símbolos de dos byte). La bandera se usa cuando un archivo se abre, en la función (FileOpen())

FILE_SHARE_READ

128

Acceso compartido para la lectura desde varios programas. La bandera se usa cuando se abre un archivo (FileOpen()), pero durante la apertura no sustituye la necesidad de indicar FILE_WRITE y/o la bandera FILE_READ

FILE_SHARE_WRITE

256

Acceso compartido para la escritura desde varios programas. La bandera se usa cuando se abre un archivo (FileOpen()), pero durante la apertura no sustituye la necesidad de indicar FILE_WRITE y/o la bandera FILE_READ

FILE_REWRITE

512

Posibilidad de reescribir un archivo usando las funciones FileCopy() y FileMove(). El archivo tiene que existir o abrirse para la escritura. En caso contrario el archivo no se abrirá.

FILE_COMMON

4096

Ubicación del archivo en la carpeta general de todos los terminales de cliente \Terminal\Common\Files. La bandera se usa en las funciones (FileOpen()), (FileCopy(), FileMove()), (FileIsExist())

Durante la apertura de un archivo se puede indicar una o más banderas. Esto se llama la combinación de banderas. Esta combinación se escribe mediante el símbolo del lógico OR (|), éste se coloca entre las banderas especificadas. Por ejemplo, para abrir un archivo en el formato CSV para la lectura y escritura al mismo tiempo, podemos indicar la combinación FILE_READ|FILE_WRITE|FILE_CSV.

Ejemplo:

   int filehandle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_CSV);

Existen unas particularidades a la hora de indicar las banderas de lectura y escritura:

  • Si indicamos FILE_READ, se intenta abrir un archivo que ya existe. Si este archivo no existe, no se puede abrirlo y el nuevo no se crea.
  • Si ponemos FILE_READ|FILE_WRITE, se crea un archivo nuevo, si el archivo con el nombre especificado no existe.
  • FILE_WRITE —  el archivo vuelve a crearse teniendo el tamaño cero.

Cuando abrimos un archivo, es obligatorio indicar la bandera FILE_WRITE y/o la bandera FILE_READ.

Las banderas que determinan el tipo de lectura de un archivo abierto poseen la prioridad. La mayor prioridad tiene la bandera FILE_CSV, luego FILE_BIN, y luego FILE_TXT que tiene la menor prioridad. De esta manera, si están indicadas varias banderas (FILE_TXT|FILE_CSV o FILE_TXT|FILE_BIN o FILE_BIN|FILE_CSV), se usará la bandera con la mayor prioridad.

Las bandera que determinan el tipo de codificación también tienen la prioridad. La bandera FILE_UNICODE es de mayor prioridad que la bandera FILE_ANSI. Por tanto, al indicar la combinación FILE_UNICODE|FILE_ANSI, se usa la bandera  FILE_UNICODE.

Si no se indica  FILE_UNICODE, ni tampoco FILE_ANSI, se sobreentiende FILE_UNICODE. Si no se indica FILE_CSV, ni FILE_BIN, ni FILE_TXT, entonces se sobreentiende FILE_CSV.

Si un archivo está abierto para la lectura como un archivo de texto (FILE_TXT o FILE_CSV), y además, al principio de este archivo se encuentra 0xff,0xfe de dos bytes, la bandera de codificación será  FILE_UNICODE, incluso si se especifica la bandera FILE_ANSI.

Véase también

Operaciones con archivos