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 IFFile.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 Глава |