Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
Мне нужно защитить некоторое количество файлов на диске. Процесс этот долгий и не факт что всё это дело отработает до перезагрузки, поэтому был разработан план действий: - пробежаться по диску при помощи FindFirstFile/FindNextFile и загнать все файлы включая пути в текстовый файл. На выходе получаю что-то вроде: Код: plaintext 1. 2. 3. - записать в реестр информацию о количестве файлов, необходимых для шифрования - взять первую строку из файла, передать ее процедуре шифрования и записать в реестр [кол-во зашифрованных файлов+1] - взять вторую строку - и т.д. При следующем запуске мне хотелось бы считать из реестра количество успешно зашифрованных файлов и исходя из этого взять из текстового файла нужную мне строку. Дело в том, что в С++ нет функции: Код: plaintext 1. есть только getline, которая мне не очень подходит. Есть идея создать вектор из объектов типа string, и перенести все содержимое файла при помощи getline, но что делать если текстовый файл в размере > 100 мегабайт? Может в C/C++ есть что-то вроде readline(hfile, npos)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 19:39 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
kotekoteно что делать если текстовый файл в размере > 100 мегабайт? Подавать заявку в книгу рекордов Гиннесса в раздел "человек, собравший у себя на винте самую большую файлопомойку в мире". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 19:50 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
Зачем шифровать все файлы на диске С ? Нельзя прочитать строку Х текстового файла, не прочитав все предыдущие строки, т.к. строки переменной длины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 19:52 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
Dima TЗачем шифровать все файлы на диске С ? Чтобы потом вымогать деньги с их владельца. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 19:56 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDima TЗачем шифровать все файлы на диске С ? Чтобы потом вымогать деньги с их владельца. Судя по вопросам данный код будет убит 99% антивирусов. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 20:08 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
kotekoteМне нужно защитить некоторое количество файлов на диске. Процесс этот долгий и не факт что всё это дело отработает до перезагрузки, поэтому был разработан план действий: - пробежаться по диску при помощи FindFirstFile/FindNextFile и загнать все файлы включая пути в текстовый файл. На выходе получаю что-то вроде: Код: plaintext 1. 2. 3. - записать в реестр информацию о количестве файлов, необходимых для шифрования - взять первую строку из файла, передать ее процедуре шифрования и записать в реестр [кол-во зашифрованных файлов+1] - взять вторую строку - и т.д. При следующем запуске мне хотелось бы считать из реестра количество успешно зашифрованных файлов и исходя из этого взять из текстового файла нужную мне строку. Дело в том, что в С++ нет функции: Код: plaintext 1. есть только getline, которая мне не очень подходит. Есть идея создать вектор из объектов типа string, и перенести все содержимое файла при помощи getline, но что делать если текстовый файл в размере > 100 мегабайт? Может в C/C++ есть что-то вроде readline(hfile, npos)? нет нету. что ты хочешь делать, это произвольной доступ к записям в файле, для этого в общем СУБД нужна или ее маленький аналог. но кажется тебе тут вовсе и не нужен произвольной доступ . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 20:24 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
kotekoteно что делать если текстовый файл в размере > 100 мегабайт? ну например , хранить в реестре не только количество обработанных файлов, но и позицию в многострадальном текстовом файле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 20:53 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
Можно просто переименовывать файлы сначала 1.txt => 1.txt.processing а потом в 1.txt.encrypted. И реестр тут вобщем-то не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2015, 22:33 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
При 100Мб Вы будете иметь около 10^8 символов, пусть каждая строка имеет в среднем 20 символов, вы будете иметь около 5*10^6 символов. У вас существует счётчик в котором указано сколько строк вы обработали. За линейное время, вы должны за обозримое время перебрать необходимое количество строк/символов по признаку конца строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 01:52 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
kotekote... Есть идея создать вектор из объектов типа string, и перенести все содержимое файла при помощи getline, но что делать если текстовый файл в размере > 100 мегабайт? 100 Мб цифра небольшая. Примерно за секунду все произойдет. Если файл значительно больше - лучше задействовать что-то из СУБД или NoSql PS Ты бы лучше описал реальную задачу. Вполне возможно есть другое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 05:33 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
Строки можно фиксированной длинны делать. Путь вроде не может быть длиннее 256 символов. Вот и пиши строками по 256 символов. Где путь короче, добавляй пробелы в хвост строки. В файле получится обычный массив. Но прочитать файл 100МБ не так много времени надо. Наконец, сохраняй не номер строки, а смещение файле и используй seek для позиционирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 11:24 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
Задачи криптографии обычно оперируют блоками байт. Тот факт что автор скатился на API со строками говорит о том что он заблуждается либо делает совсем другое. Что другое - вот в чём вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 11:26 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
mcureenabПуть вроде не может быть длиннее 256 символов. Вот и пиши строками по 256 символов. Ага, видел я такие программы, которые закладываются на это ошибочное предположение. Забавные спецэффекты с ними происходят, когда напускаешь их на путь типа "C:\Documents and Settings\Вася Пупкин\Мои документы\Моя музыка\Попса\Отстойная\Группа с длинным названием\Очень забавное название альбома, придуманное дебилами\А вот тут мы уложим в названии песни всё её содержание без остатка.mp3". 256 символов это ограничение на одно только имя файла. Путь к нему - уже 2048. А при использовании юникодной нотации (которую придумали специально чтобы обойти упомянутые спецэффекты в функциях WinAPI) можно полное имя файла растянуть на 32к. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 12:28 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 12:46 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, ограничения в 256/255 байтов я часто встречал в документах из серии RFC-** В части файловой системы - полностью согласен что это боян, но возможно стоит еще каждый кейс рассмотреть отдельно на предмет того куда этот path сохраняется и откуда растут ноги. Толи от compatibility со старым API (MAX_PATH) толи от ограниченности ячейки в БД. Толи еще от бох весть каких протоколов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 14:06 |
|
||
|
Прочитать файл построчно
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovmcureenabПуть вроде не может быть длиннее 256 символов. Вот и пиши строками по 256 символов. Ага, видел я такие программы, которые закладываются на это ошибочное предположение. Это не предположение, а документированное ограничение: https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365247(v=vs.85).aspx]Maximum Path Length Limitation In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters . ... The Windows API has many functions that also have Unicode versions to permit an extended-length path for a maximum total path length of 32,767 characters . Но "32,767 characters" вряд ли угрожает автору, пока он работает только с локальными дисками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 14:07 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39082841&tid=2018788]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
84ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 188ms |

| 0 / 0 |
