С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 22
.NET 4.x

Чтение файлов по байтно, перемешивание и сохранение кодированного результата.

03.06.2011, 21:17. Показов 2470. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем нужно читать любые файлы, картинки, аудио файлы, что угодно.
По байтно, перемешивая по произвольному алгоритму байты и сохранение кодированного файла, с возможностью декодировать по обратному алгоритму и получить исходный файл.
Нашел я по байтное чтение, но там читают только текст из текстовых документов.
Я пробовал так: (функция, пробовал просто перезаписать файл для начала)

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public void coderFile()
        {
            int pudding = 0;
            int x = 0;
            byte[] byData = new byte[100];   // масив байтов
            FileStream fs = new FileStream(fileOpen, FileMode.Open, FileAccess.Read); //исходный файл
 
 
            FileStream fsk = new FileStream(fileSave, FileMode.OpenOrCreate, FileAccess.Write); // Выходящий
 
 
            for (; ; )
            {
 
                if (fs.CanSeek == true) // если можно производить поиск
                {
                    fs.Seek(pudding, SeekOrigin.Begin);  // Читаяю по 100 байт и скаждым проходом увеличиваю отступ на 100 байт.
                    fs.Read(byData, 0, 100);
                }
 
                fsk.Seek(pudding, SeekOrigin.Begin);//Также отступ при записи тоже увеличивается при проходе.
 
                fsk.Write(byData, 0, byData.Length); // запись массива байт
 
                x = byData.Length; //Проверяя длину, считал что когда будет считан последний кусок файла он почти наверняка != 100 и завершаю цыкл. но цыкл не завершается и работает бесконечно.
 
                pudding += x;
 
                if (x != 100)
                {
                    break;
                }
            }
            fs.Dispose(); // освобождаем ресурсы
            fsk.Dispose(); // освобождаем ресурсы
        }
Большая просьба вытолкнуть кирзовым сапогом меня из этого быдлокода и наставить на путь истенный, только если можно немного подробнее, особенно по определению конца файла. Спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2011, 21:17
Ответы с готовыми решениями:

Чтение файла в русской кодировке, форматирование данных и сохранение результата в другом файле
Доброго времени суток! Нужен bat файл, т.к. в написании bat файлов нет опыта, необходима помощь. В папке...

Чтение информации из файлов, ее обработка, запись результата в файл
Дано два файла, содержащих одинаковое количество целых чисел. Записать из них в третий файл только те пары чисел, в которых число из...

Сохранение и чтение из типизированных файлов
Здравствуйте. У меня есть структура, в которой хранится инфа о компанентах (размеры, имя и т.д.). type TestStruct = record ...

2
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
03.06.2011, 21:51
Лучший ответ Сообщение было отмечено как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using (var fs = File.Open(@"FILE_NAME", FileMode.Open, FileAccess.ReadWrite)) {
    // Буффер размером 4Кб
    var buff   = new byte[4096];
    // Кол-во прочитанных байт
    int readed = 0;
 
    while (fs.Position < fs.Length) {
        // Читаем
        readed = fs.Read(buff, 0, buff.Length);
        /* Изменяем исходные данные (байты)
         * в Вашем случае здесь должен быть Ваш
         * алгоритм изменения исходных данных
         * а не XOR
         */
        for (int i = 0; i < readed; i++)
            buff[i] ^= 128; // xor 128
        // Сдвигаемся в начало прочитанного
        fs.Position -= readed;
        // Заменяем исходные данные новыми
        fs.Write(buff, 0, readed);
    }
 
    fs.Flush();
}
Чтобы вернуть исходный файл (после применения этого кода), пройдитесь по нему 'алгоритмом' еще раз.
3
0 / 0 / 0
Регистрация: 11.06.2009
Сообщений: 22
03.06.2011, 22:35  [ТС]
Спасибо за наставление)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2011, 22:35
Помогаю со студенческими работами здесь

IMAP: чтение и сохранение XLS-файлов
Всем привет! Совсем недавно начал разбираться с IMAP &amp; XLS, столкнулся с пока нерешенной проблемой. На ящик (GMail) захожу, заголовки,...

Перемешивание файлов в папке
Подскажите пожалуйста как можно организовать перемешивание файлов в указанном каталоге?

Рандомное перемешивание звуковых файлов
Здравствуйте. На компьютере есть порядка 50 звуковых файлов длительностью 30 сек. каждая. Нужно перемешать их и, соответственно, сразу...

Перемешивание текста из двух текстовых файлов
Доброго времени суток всем! Помогите решить следующую задачу: Дан текстовый файл, в котором в каждой строке от 1 до 25 слов. Количество...

Сохранение результата
Имеются две кнопки. Нажимая на первую, выводится один результат(144), нажимая на вторую - другой(84). if(isset($_POST)) { $price...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru