Что такое большие файлы

Обновлено: 04.07.2024

Что такое большой файл? Ну так чтобы реально большой? В бытность свою я думал, что это файлик на 50-60 тыс строк записей. И оставался я бы в таком неведении до сих пор, но пришлось выполнять один проект, в котором надо было работать с файлами на 600-800 тыс строк. Хождение по мукам — под катом:

Что сначала

А сначала, друзья мои, ринулись мы в самое простое, что можно придумать. Interop.Excell, и все дела. Казалось. Ага, щаз. Как показали тестовые испытания, данный способ открытия приводил к тому, что за час было прочитано 200 тыс строк экселя, приложение активно потребляло оперативку, и раздвигало плечами остальные процессы на машине. Кончилось все ожидаемо, но следственный эксперимент надо было довести до конца — на 260 тысячах приложение свалилось в OutOfMemory на машине с 4 Гб. Стало понятно, что в лоб решить проблему не получится

Google it

Сколько нам открытий чудных… Гугль привел, как ни странно, в msdn, где я познакомился с двумя методами открытия очень больших файлов: DOM и SAX. Уж за давностью времен не вспомню, но какой то из них отвалился по причине опостылевшей уже на тот момент OutOfMemory, а второй был совершенно неюзабелен в плане доступа к данным. Почему — читаем ниже.

Из чего же, из чего же

Сделаны наши эксельки. Ни для кого, кто решил копнуть формат чуть глубже, не станет секретом, что в отличие от бинарным xls, xlsx — по сути zip архив с данными. Достаточно поменять расширение ручками и распаковать архив в папку — и мы получим всю внутреннюю структуру документа, что есть не что иное, как набор xml файлов и сопутствующей информации. Как оказалось, в корневом xml нет текстовых данных. Вместо этого мы имеем набор индексов, которые ссылаются на вспомогательный файл, в котором представлены пары «ключ/значение» Одним из вышеприведенных способов открыть то файл можно, но при этом нужно копаться в сопутствующих файлах и вытаскивать из них текстовые значения. Мрак.

И отступила тьма

После долгих мытарств и стенаний родилось следующее:

Наши любимые юзинги, которые некоторые личности забывают указывать:

using System;
using System.Collections. Generic ;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

* This source code was highlighted with Source Code Highlighter .

Собственно, сам код:

public delegate void MessageHave( string message);

public delegate void _DataLoaded( List < string > data);

public delegate void _NewProcent( int col);

public static _DataLoaded DataLoaded;

public static _NewProcent NewProcent;

public static MessageHave MessageHave_Event;

id++;
if (id == calc)
NewProcent(id);
calc += 1000;
>
>
DataLoaded(lines);
>
cnn.Close();
>
catch (Exception ex)
MessageHave_Event( "Exception: " + ex.Message);
cnn.Close();
>
>
>

* This source code was highlighted with Source Code Highlighter .

Код показал производительность порядка 15-20 минут на файлах в 600-800 тыс строк записей.

Если кому то реализация покажется кривой — сильно не пинать :) Выслушаю все комментарии

Ненужные файлы – это цифровой мусор, который создается при работе вашего компьютера или смартфона, а вы этого даже не замечаете. Рассказываем, что это за файлы и откуда они берутся.


Что такое ненужные файлы и надо ли их удалять?

Ненужные файлы занимают много памяти

Junk Files («мусорные файлы» или «ненужные файлы») возникают всегда, когда вы используете свой компьютер. Как следует из названия, на самом деле это цифровой мусор — данные, которые можно безопасно утилизировать.

Чтобы вы могли эффективно работать, компьютер не только сохраняет ваше актуальное действие, но и последние изменения файлов. Например, если вы используете программу для создания и редактирования текстов, такую как Word, то вы можете без проблем восстановить последние напечатанные отрывки. Эти временные файлы важны для удобства в работе.

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

Такие программы как CCleaner безопасно удаляют подобные ненужные файлы. Тем не менее, всегда обращайте внимание на то, что вы удаляете, потому что не все инструменты могут отличить мусор от важных файлов.

Можно ли платить смартфоном через NFC без интернета?

Что такое ненужные файлы на смартфоне

Ненужные файлы могут быть и на смартфоне — вы наверняка видели папку с таким во встроенном инструменте очистки памяти на Android.


На смартфонах ненужные файлы также можно удалять — но лучше делать это с помощью встроенного приложения «Память» или дополнительных инструментов для очистки, а не вручную. Если самостоятельно начать чистить папки с файлами, есть риск удалить важные данные, которые нужны для работы приложений.

Прежде всего скажем, что речь здесь пойдет о файловых системах FAT и NTFS, как наиболее распространенных, и ничего не будет сказано о файловых системах, используемых в не-Windows системах, поскольку такие системы лежат вне сферы интересов автора. А теперь – к делу.

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


Проведите эксперимент. Возьмите любой исполняемый файл и выполните его копирование командой
copy что-то.exe что-то-другое.exe
Если вы раньше с этим сталкивались, то уже знаете, что результирующий файл получится намного короче исходного и не будет копией. Причина простая: программа copy, запущенная без параметра /b, копирует файл до тех пор, пока не встретит байт с кодом 27h, этот символ называется «конец файла».

Итак, у нас уже есть два разных признака конца файла – по числу, записанному в файловой системе, и по специальному байту в теле файла. Правда, стоит отметить, что второй признак остался с тех времен, когда файлы были преимущественно текстовыми и сейчас практически не применяется.


В файловых системах, использующих кластеры, а FAT и NTFS относятся именно к таким ФС, есть еще третий размер – размер файла на диске, то есть суммарный размер кластеров, отведенных этому файлу. В файловых системах FAT этот размер больше размера собственно файла или равен ему. Разница между размерами, если она есть, – так называемый хвост файла – это напрасно пропадающее место на диске, плата за размещение файлов по кластерам, а не встык друг за другом, хотя файловые системы с таким размещением файлов тоже существуют.

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


Если включить в рассмотрение NTFS, то картина дополнится новыми штрихами.
Прежде всего, размер файла на диске может оказаться меньше собственно размера файла.
Если тело файла помещается в свободную область файловой записи MFT, то этот файл не занимает на диске ни одного кластера.

Максимальный размер такого файла зависит от размера записи и составляет примерно 600 байтов для записи мелкого размера (1 Кб) и 3600 – для записи крупного размера (4 Кб). Следует, впрочем, отметить, что до недавнего времени Windows показывала размер такого файла на диске равным одному кластеру, хотя фактически ни одного кластера файлу не выделено.

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

Дополнительно усложняют картину так называемые разреженные файлы. В них полезные данные содержаться только в определенных участках файла, а остальная часть файла не используется вовсе. Возьмем в качестве примера файл журнала изменений \$Extend\$UsnJrnl, имеющийся почти на каждом компьютере (не пытайтесь увидеть его в проводнике или других диспетчерах файлов, не получится).

Он может иметь длину несколько гигабайт, но значимых данных содержит при этом обычно только 32 мегабайта в самом конце. А остальная часть вообще никаких данных не содержит, места на диске не занимает, и при попытке прочитать данные из этой части система выдаст набор нулей, даже не обращаясь к диску.
Если у читателя возникнет желание поэкспериментировать с разреженными файлами, такой файл можно создать с помощью команды fsutil sparse. А на досуге можно обдумать, какова же настоящая длина файла, если система записала в соответствующую графу число 4 Гб, а реальных данных в файле только 32 Мб и на диске он занимает тоже 32 Мб.

И, наконец, расскажем еще об одной длине: длине действительных данных (valid data). Эта длина и устанавливающие ее функции представляют интерес почти исключительно для программистов, тем не менее изредка с ней могут столкнуться и обычные пользователи.

В файловых системах FAT такого понятия не существует, и функции, которые используют эту величину, записывают в тело файла на соответствующих местах нули. В NTFS эта длина является характеристикой файла.

Попробуем пояснить, о чем идет речь, на примере. Возьмите флешку (флешка используется для наглядности, поскольку она медленнее жесткого диска работает с большими объемами данных) размером от гигабайта, отформатированную в FAT32, и создайте на ней большой файл командой
fsutil file createnew k:\пробный.txt 900000000

Теперь отформатируйте флешку в NTFS, для чистоты эксперимента лучше взять ту же самую, и повторите создание файла. На этот раз операция пройдет практически моментально. Записывать нули в тело файла уже не надо, достаточно распределить место под файл и установить для него длину действительных данных равной нулю. В теле файла останется «мусор», который был записан в этих секторах, но при чтении данных обращения к этим данным не произойдет – обнаружив, что длина действительных данных равна нулю, все, что дальше этого нуля, система читать не станет – ведь эти данные недействительны. Их можно сделать действительными, если изменить значение длины действительных данных.


Рассмотрим это на примере. Создайте новый файл на одном из рабочих дисков, отформатированном в NTFS. Сотни мегабайт совершенно не обязательны, десятка-другого килобайт будет вполне достаточно:
fsutil file createnew C:\пробный.txt 10000

Теперь откройте его с помощью любого просмотрщика файлов, например FAR.

Как видим, в файле действительно нули. Но если посмотреть на этот файл с помощью какого-либо редактора дисков, обращающегося к секторам напрямую, например dmde, то картина будет другая.

Если мы откроем том С как логическое устройство и посмотрим на содержимое файла, то увидим те же самые нули.

Но если открыть диск как физическое устройство, то в том же самом секторе (обратите внимание на номера LBA – разница в 63 возникла из-за того, что начало раздела сдвинуто относительно начала диска) увидим данные, которые ранее были записаны в какой-то позже удаленный файл.

И если мы увеличим длину действительных данных, то увидим эти данные в файле. Установим эту длину равной 300 байт:

fsutil file setvaliddata C:\пробный.txt 300

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


Теперь снова посмотри на содержимое файла. Заметьте, что никаких данных мы в него не записывали!

Чисто случайно получилось, что в этом файле довольно много осмысленного текста, что делает картину более наглядной. 300 десятичных байтов – это 12c шестнадцатиричных, и как раз на этом байте обрывается текст и начинаются нули. Если сдвинуть границу действительных данных еще дальше, то «проявятся» и следующие строки.

Подведем итоги


Имеется две физических длины файла – это размер файла, записанный в файловой системе и место, занимаемое на диске. Также имеется две логических длины файла – это признак конца файла (байт EOF – 27h) и длина действительных данных. Как составную часть логической длины можно рассматривать и пустые области в разреженных файлах – вспомните \$Extend\$UsnJrnl, где большой массив отсутствующих данных завершается тридцатью двумя мегабайтами действительных.

Итак, обычно, когда говорят о длине файла, имеют в виду число, хранящееся в файловой системе. Но, как видите, возможны варианты!

У многих бывала ситуация, когда вроде бы избавились от лишнего мусора в своем компьютере, но места много не освободилось. В такие моменты возникает вопрос: в чем же дело? Что же это за такие громоздкие файлы и где они находятся?

Стандартный способ без стороннего ПО.

Это самый простой метод, который не требует наличие какой-то специальной программы. Все, что вам понадобится, у вас уже есть.

Зайдите в тот том диска, в котором будет проходить проверка.

diski komputera

На Windows 10 и 8 нажмите на эту маленькую «галочку». С ее помощью вы откроете дополнительное меню, которое нам пригодится.

poisk windows

В новом меню нажмите кнопки, которые выделены. Необязательно выбирать гигантский размер, вы можете начать с любого другого, но учтите, что в таком случае на проверку уйдет очень много времени.

gigantskie faylu

На Windows 7 в правом верхнем углу добавляем фильтр по размеру.

razmer bolshie faylu windows

Выбрав размер, вы автоматически запустите поиск. После проверки вы получите весь результат проделанной работы. Но будьте бдительны, ведь системные документы тоже включены в этот список. Если вы не знаете, что это за файл, то лучше его не трогать.

Утилита Ainvo Disk Explorer для поиска больших документов

После установки сразу же запускайте утилиту и начинайте проверку, нажав на необходимую кнопку.

ainvo soft

Совет: если вам нужно проверить какой-то конкретный диск, то посетите меню Настройки. Там вы сможете указать, какой диск проверять.

ainvo disk explorer

vubor diskov

Через некоторое время программа выдаст вам результат. Огромные файлы вы можете увидеть, щелкнув по кнопке, которая выделена на скриншоте.

samue bolshie faylu

Вот здесь и начинается самая сложная работа. Дело в том, что программа показывает абсолютно все большие документы, включая системные. Поэтому настоятельно рекомендуется изучить внимательно весь список утилит.

Не удивляйтесь, если вы нашли документы от старой программы, от которой избавились еще пару лет назад. Просто смело их удалите.

А вот если вы не знаете, что это за файл, то его лучше не трогать вообще. Ведь удаление системного документа может привести к глобальным проблемам с устройством. Так что будьте осторожны.

Утилита ηSearcher для поиска больших файлов

После установки смело открывайте ее. Но не спешите начинать, сначала посмотрите, какие дополнительные функции она вам предлагает.


Можно указать минимальный размер документа, где конкретно искать и даже некоторые даты (создания, изменения или открытия).

usearcher poisk

При указании всех известных данные, просто нажмите на кнопку «Начать поиск».

nachat iskat

Через несколько минут вам будет доступен подробный анализ всех «тяжелых» файлов. Его можно отсортировать, указав критерии, которые вас интересуют. Документы, которые можно удалить без вреда для системы, выделены зеленым цветом. А вот если файл окрашен оранжевым, то лучше его не трогать.

razmer faylov

Таким образом, можно найти большие файлы на компьютере и очистить несколько гигабайтов памяти. Такую глобальную чистку не стоит проводить очень часто. К примеру, одного раза в полгода будет вполне достаточно. Но не забывайте о своевременной чистке устройства, ведь так вы поможете системе избавить от давно ненужных файлов, которая отбирают драгоценную память.

C большим выбором технологии пользователи ПК все чаще записывают свои файлы с большим объемом информации на разные накопители.

Один из таких накопителей - Flesh (флешка), которая подсоединяется к usb-порту.

Что изображает для вас флешка, вы уже знаете. Почитав отдельные статьи такие как: "Основные неисправности флешек".

Объем флешек с каждым днем растет ( самая большая по размеру флешка это Kingston DataTraveler (Кингстон), от 8 Гб до 250 Гб), пользователи задаются таким вопросом:

"Как записать большие файлы на флешку или на жесткий диск (винчестер)? Как решить себе такую проблему?

Вот я и решил написать эту статью, в котором будет объясняться о решении данной проблеме.

А сейчас, чтобы немного понять как это делается, я освежу вам мозг и все поймете. дело в том, при производстве флешек, их форматируют в системе FAT 32 . А эта система не поддерживает файлы больше 4 Гб .

Чтобы записываемый файл больше 4 Гб убрался на флешку, сиситему надо перевести в NTFS . Данная система способна работать с файлами, с размером почти до 16 Тб. Есть три варианта, как можно на накопителе сделать систему NTFS. Не чего сложного в этом нет, для начала подсоедините свой флеш-накопитель к компьютеру usb-разъему и подождите пока ОС распознает ее в системе.

3 варианта по установке системы NTFS, для Windows XP

Вариант 1. Форматирование флешки

В " пуске " открываем " Мой компьютер ", выбираем свою флешку. У меня в данный момент это "Съемный диск (К:)". У вас наверняка будет под другой буквой. После этого как определились, где у вас находится флешка, вызываем контексное меню нажатием правой кнопкой мыши. Дальше выбираем пункт " Форматировать. ".

Появляется окно с настройками и форматирования флешки. Хочу предупредить, что в Windows 7 в меню "файловая система" уже есть значение NTFS . А вот в Windows XP этого значения может быть недоступно , как видно на рисунке.

И так, чтобы наше значение было достигнуто (NTFS)? в Windows XP делаем следующие:
Нажимаем кнопочку " Пуск " ( в низу в левом углу на мониторе), далее выбираете пункт: Настройка - Панель управления - Система . В открывшиемся окне " Свойства системы " открываете вкладышь " Оборудование " и нажимаете на кнопочку " Диспетчер устройств ". В окне " Диспетчер устройств " раскрываем пункт " Дисковые устройства ", двойным щелчком нажатии мыши, раскрываем окно свойств подсоединений флешки. Все это демонстрируется на рисунке ниже.

Теперь открываем вкладки " Политика " и устанавливаем в чек боксе галочку на положение " Оптимизировать для выполнения ", после этого нажимаем на "ОК".

Закройте все окна.

Теперь заного вызываем окно для настроек и форматирования флешки, как описывалось в самом начале статьи.

В меню "файловая система" появится значение NTFS, выбираем это значение, как показано на рисунке. Кстати такое же меню уже изначально можно увидеть в Виндовс 7.

После выбора системы NTFS, можно настроить другие параметры как: выбор метки тома и выбора быстрого форматирования.

Теперь форматируем флешку NTFS и получаете ваше счастье.

После того как отформатируете флешку в Виндовс ХР, установите вкладыш " Политика ", галочку в чек боксе " Оптимизировать для быстрого удаления ".

Вариант 2. Конвертирование флешки.

Для этого будем использовать программу для преобразования файловой системы "convert.exe" ( Fale System Conversion Utility, находятся в папке C:\Windows\System 32\).

Нажимаем кнопочку "Пуск", выбираем выбираем пункт "Выполнить. ", набираем команду "cmd" и жмем на кнопочку "ОК". После этого мы увидим окошко обработчика команд.

Туда набираем команду:
"convert<буква_флешки>:/fs:ntfs/nosecurity/x"

В своем примере я привожу запись "convert r:/fs:ntfs/nosecurity/x".

Нажимаем "Enter", после завершения конвертирования вводим команду "exit" дальше "Enter" или просто закрываем окно. Все это показано на картинке ниже.

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

У этой команды планируются следующие рекомендации в использовании:

Вариант 3. Конвертирования данных, в FAT 32 в NTFS, без потери данных, с помощью программой Paragon Partition Maneger 11.9887

Эту проблему , а точнее : конвертирование файловой системы, без потери данных, можно устранить как в самой ОС, и программой Paragon Partition Maneger 11.9887. Данная статья подходит как к Windows XP, так и Windows 7.

Читайте также: