| Rapid-Q Documentation by William Yu (c)1999 | Глава 7 |
fmCreate - Создать файл (для чтения \записи), если фай существует, то он урезается до нулевой длины. fmOpenRead - Открыть файл только для чтения fmOpenWrite - Открыть файл только для записи fmOpenReadWrite - Открыть файл только для чтения и записиЧтобы открыть файл, вы должны передать имя файла и указать режим
DIM File AS QFileStream
File.Open("Test.txt", fmOpenRead)
В примере будет открыт файл "Test.txt" только для чтения.
См. RAPIDQ.INC .
CONST fmCreate = 65535
CONST fmOpenRead = 0
CONST fmOpenWrite = 1
CONST fmOpenReadWrite = 2
Чтобы прочитать данные используйте методы ReadNum и ReadStr.
PRINT File.ReadNum(Num_SINGLE) '-- Чтение 4 байт как переменной типа SINGLE
PRINT File.ReadStr(1024) '-- Чтение 1024 байт
Другим применением будет сохранение величины в переменной заданного типа, используя обычные процедуры
Read и Write
File.Read(A&) '-- Чтение переменной типа long и сохранение ее в A&
File.Write(B#) '-- Запись переменной B# типа double
'-- или более длинный вид записи :
A& = File.ReadNum(Num_LONG)
File.WriteNum(B#, Num_DOUBLE)
После того как вы поработали с файлом не забудьте закрыть его.
Вы можете затем повторно использовать QFileStream для открытия другого файла.
Для проверкитого, достигли ли вы конца файла можно или сравнивать текущую позицию File.Position с размером файла
File.Size или проверять равно ли File.EOF true (-1).
Пока File.Position меньше File.Size вы еще не достигли конца файла.
Есть два способа проверки существования файла:
IF FileExists("Test.txt") <> FALSE THEN
File.Open("Test.txt", fmOpenRead)
END IF
Но лучше
IF File.Open("Test.txt", fmOpenRead) = FALSE THEN
ShowMessage("Could not open file")
END IF
File.Open вовращает ненулевое значение, если файл успешно открыт и 0 - в другом случае.
DIM File AS QFileStream
File.Open("test.txt", fmOpenRead)
DIM Memory AS QMemoryStream
Memory.CopyFrom(File, File.Size) '-- Копировать все
Как видно мы просто скопировали все содержимое файла "test.txt" в поток в памяти и теперь можем
менять данные в потоке без внесения изменений в файл.
TYPE TTest
S AS STRING*8
N AS INTEGER
END TYPE
DIM Test AS TTest
DIM File AS QFileStream
File.Open("test.txt", fmCreate)
File.WriteUDT(Test)
File.Close
В примере выше 12 байт были сохранены в файл test.txt. 8 байт как строка фиксированной длины
S, и 4 байта как N.
Для чтения UDT используйте метод ReadUDT
File.Open("test.txt", fmOpenRead)
File.ReadUDT(Test)
запись\чтение массивов также несложно
DIM A(1 TO 100) AS LONG
DIM File AS QFileStream
File.Open("test.txt", fmCreate)
File.SaveArray(A(1), 100)
File.Close
Первый параметр SaveArray это элемент массива с котрого надо начать сохранение (любой от 1 до 100 в нашем примере).
Следующий параметр указывает сколько элементов массива следует сохранить. Мы указали 100 элементов.
Аналогично можно использовать LoadArray для загрузки массива.
Similarly, we can use LoadArray to retrieve our data:
File.Open("test.txt", fmOpenRead)
File.LoadArray(A(1), 100)
Потоки очень популярны во многих языках программирования высокого уровня для работы с файлами или памятью.
| Prev Глава | Содержание | Next Глава |