Доступ Java к большому файлу

Взято из ссылки, размещенной в ответ на ссылку despesz '.

Postgres 9.x обладает способностью делать то, что запрашивается. См. Параграф «Предоставление объектов базы данных»:

http://www.postgresql.org/docs/current/interactive/sql-grant.html

Где это говорит: «Существует также возможность предоставления привилегий всем объектам одного и того же типа в одной или нескольких схемах. В настоящее время эта функция поддерживается только для таблиц, последовательностей и функций (но учтите, что ALL TABLES считается включающим представления и сторонние объекты). таблицы). "

На этой странице также обсуждается использование ролей и привилегий, называемых" все привилегии ".

Также представлена ​​информация о том, как функциональные возможности GRANT сравниваются со стандартами SQL.

5
задан Michael Myers 23 June 2009 в 15:04
поделиться

3 ответа

Да, используйте RandomAccessFile - вот для чего он нужен. Вы можете потенциально использовать FileChannel , но я бы сначала выбрал RandomAccessFile - это, вероятно, будет проще.

Обратите внимание, что вы не будете возможность «вставить в середину» файла после записи конечной части: я не знаю ни одной файловой системы, которая поддерживает это. По сути, вам нужно знать полный размер, прежде чем писать последний раздел. Альтернативой может быть последовательная запись, запоминая последний бит до конца.

Если вы дадите нам больше информации о том, что вам нужно сделать (и когда у вас будет информация о размере), мы сможем помочь вам больше. .

РЕДАКТИРОВАТЬ: Чтобы создать файл определенного размера, вы можете seek () за концом и затем записать данные:

import java.io.*;

public class Test
{
    // Just for the sake of a simple test program!
    public static void main(String[] args) throws Exception
    {
        RandomAccessFile file = new RandomAccessFile("file.dat", "rw");

        file.seek(100);
        file.write(0);
        file.close();
    }
}

После выхода file.dat будет иметь длину 101 байт. (Обратите внимание, что обычно вы использовали бы try / finally и т. Д.)

РЕДАКТИРОВАТЬ: Как упоминалось в комментариях coobird, setLength () также расширит файл, но он также усечет файл, если вы укажите длину меньше текущего размера. Учитывая ваш комментарий о записи торрент-данных, я подозреваю, что поиск и запись - это именно то поведение, которое вам нужно. Когда вы получите кусок, просто найдите нужное место, запишите его, и файл расширится сам, когда потребуется.

setLength () также расширит файл, но он также обрежет файл, если вы укажете длину меньше текущего размера. Учитывая ваш комментарий о записи торрент-данных, я подозреваю, что поиск и запись - это именно то поведение, которое вам нужно. Когда вы получите кусок, просто найдите нужное место, запишите его, и файл расширится сам, когда потребуется.

setLength () также расширит файл, но он также обрежет файл, если вы укажете длину меньше текущего размера. Учитывая ваш комментарий о записи торрент-данных, я подозреваю, что поиск и запись - это именно то поведение, которое вам нужно. Когда вы получите кусок, просто найдите нужное место, запишите его, и файл расширится сам, когда потребуется.

10
ответ дан 18 December 2019 в 14:50
поделиться

Думаю, RandomAccessFile подходит для этой проблемы

1
ответ дан 18 December 2019 в 14:50
поделиться

RandomAccessFile должен сделать это

2
ответ дан 18 December 2019 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: