Скопируйте файл, не используя кэш файла окон

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
6
задан svick 4 September 2014 в 13:02
поделиться

3 ответа

Еще более важный, существует FILE_FLAG_WRITE_THROUGH и FILE_FLAG_NO_BUFFERING.

MSDN имеет хорошую статью о них обоих: http://support.microsoft.com/kb/99794

5
ответ дан 8 December 2019 в 12:24
поделиться

Я не уверен, помогает ли это, но смотрите на Увеличенную Производительность Используя FILE_FLAG_SEQUENTIAL_SCAN.

СВОДКА

Существует флаг для CreateFile () назван FILE_FLAG_SEQUENTIAL_SCAN, который направит Диспетчера кэша для доступа к файлу последовательно.

Любой читающий потенциально большие файлы с последовательным доступом может указать этот флаг для увеличенной производительности. Этот флаг полезен при чтении файлов, которые "главным образом" последовательны, но Вы иногда перескакиваете через маленькие диапазоны байтов.

4
ответ дан 8 December 2019 в 12:24
поделиться

Если Вы не возражаете использовать инструмент, ESEUTIL работал отлично для меня.

Можно проверить это Буферизированное сравнение записи в блоге и функции NonBuffered IO и от того, где получить ESEUTIL.

копирование некоторого текста из блога technet:

Так смотря на определение буферизированного ввода-вывода выше, мы видим, где воспринятые проблемы производительности заключаются - в кэше файловой системы наверху. Освободивший буфер ввод-вывод (или необработанная копия файла) предпочтен при попытке скопировать большой файл от одного местоположения до другого, когда мы не намереваемся получить доступ к исходному файлу после того, как копия завершена. Это будет избегать кэша файловой системы наверху и препятствовать тому, чтобы кэш файловой системы был эффективно сброшен большими данными файла. Много приложений выполняют это путем вызова CreateFile () для создания пустого целевого файла, затем использования ReadFile () и WriteFile () функции для передачи данных. CreateFile () - функция CreateFile создает или открывает файл, поток файла, каталог, физический диск, объем, консольный буфер, ленточный накопитель, коммуникационный ресурс, почтовый слот или именованный канал. Функция возвращает дескриптор, который может использоваться для доступа к объекту. ReadFile () - функция ReadFile считывает данные из файла и запускается в положении, на которое указывает указатель файла. Можно использовать эту функцию и для синхронных и для асинхронных операций. WriteFile () - WriteFile функционируют данные записей в файл в положении, указанном указателем файла. Эта функция разработана и для синхронной и для асинхронной операции. Для копирования файлов вокруг сети, которые являются очень большими, моя предпочтительная утилита копии является ESEUTIL, который является одной из утилит базы данных, которым предоставляют Exchange.

3
ответ дан 8 December 2019 в 12:24
поделиться
Другие вопросы по тегам:

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