Чтение файлов в линуксе
Модератор: Модераторы
Чтение файлов в линуксе
Тестил на ASPLinuks11, FPC 2.0.2. fdopen и fpopen нормально открывают файлы только до 2Гб. reset после 2Гб выдаёт ошибку 27 rewrite при открытии большого файла просто усекает его до 0. reset к тому же неудобен. Им файл открывается сразу для чтения и записи. Если файл с правом только на чтении, то облом наступает сразу при открытии. Можно чем-то читать и писать файлы с размером больше 2Гб?
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
mif писал(а):Через файловые потоки пробовал ? А какие задачи с этим 2-х гиговым файлом связаны?
fdopen и fpopen че-то я не помню таких на паскале.
Никогда через потоки не читал, не думал что для простой задачи придётся так извращаться. fdopen и fpopen - системные вызовы, для их использования в строке uses нужно добавить oldlinux или unix, baseunix Намного удобнее, только для вычисления длины файла нужно позицию передвигать в конец. А задача простая и не только с 2 гектарами а с 4 и больше. Имеется утилита, текстовой визуализатор, я в ней книжки читаю. Почти доделал, но пользоваться уже можно. Со времён нортона имеется привычка просматривать в визуализаторе не только текстовики. А тут большие архивы, образы на диске лежат. Для просмотра недоступны
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Если мне память не изменяет, поддержка файлов размером более 2Гб на платформах, отличных от Windows, появилась все-таки позже версии 2.0.2. Причем появилась она именно для потоков (TStream) и функции FileSeek(). Насчет 'обычных' файлов (Assign/reset/rewrite) - скорее нет чем да, хотя все равно проверять надо.
- Alexander
- энтузиаст
- Сообщения: 864
- Зарегистрирован: 18.12.2005 18:10:00
- Откуда: оттуда
- Контактная информация:
Обновись до FPC 2.0.4 на нём я точно испытывал. В более старых
может не быть.
В качестве типа для переменной в операциях вроде Seek - тип Int64.
Потом не забывай о переменной FileMode := ...
Она определяет файл только для чтения, записи или вместе.
Ну и как всегда:
Assign
Reset, Rewrite, Append
Close
может не быть.
В качестве типа для переменной в операциях вроде Seek - тип Int64.
Потом не забывай о переменной FileMode := ...
Она определяет файл только для чтения, записи или вместе.
Ну и как всегда:
Assign
Reset, Rewrite, Append
Close
