Member 13142768 Ответов: 1

Запишите один файл в порядке возрастания имен из одной папки в другую


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

Что я уже пробовал:

using (FileStream stream = File.OpenRead("C:\\veer1.raw"))
                       using (FileStream writeStream = File.OpenWrite("D:\\file2.raw"))
                       {
                           BinaryReader reader = new BinaryReader(stream);
                           BinaryWriter writer = new BinaryWriter(writeStream);

                           // create a buffer to hold the bytes
                           byte[] buffer = new Byte[1024];
                           int bytesRead;

                           // while the read method returns bytes
                           // keep writing them to the output stream
                           while ((bytesRead =
                                   stream.Read(buffer, 0, 1024)) > 0)
                           {
                               writeStream.Write(buffer, 0, bytesRead);
                           }

Maciej Los

Если вы хотите записать данные в "возрастающий порядок имен- сначала ты должен их рассортировать! Я не вижу соответствующего кода...

Mehedi Shams

Привет Член 13142768,

Каково содержание файла? Имена или цифры? Я имею в виду, как вы хотите сравнить? Я не вижу никакой попытки сравнения в коде - он просто читает из одного файла промывку в другой; файлы будут одинаковыми.

Member 13142768

да я хочу скопировать тот же контент

Member 13142768

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

Richard MacCutchan

Где находятся данные, которые должны быть отсортированы в каждой записи?

Member 13142768

это будет в памяти названо как veer1.raw/veer1.txt ,
для этой цели я использую только операцию чтения .

Member 13142768

и этот файл я хочу записать несколько раз в другую папку в порядке возрастания имен

1 Ответов

Рейтинг:
1

Mehedi Shams

Привет Member 13142768,

Вы читаете и пишете сразу. Сначала вам нужно сохранить в памяти то, что вы прочитали. Для этого можно использовать универсальный list Следующие строки могут измениться:

while ((bytesRead =
        stream.Read(buffer, 0, 1024)) > 0)
{
    writeStream.Write(buffer, 0, bytesRead);
}
К:
List<byte[]> StrList = new List<byte[]>();
                
while ((bytesRead =
        stream.Read(buffer, 0, 1024)) > 0)
{
    StrList.Add(buffer);
}
То есть Вы читаете все двоичное содержимое в списке как объекты байтового массива. Но я все еще не уверен в содержании вашего файла, так как вы забыли ответить на этот вопрос.

После сортировки вам нужно записать содержимое списка.

Встроенный sort метод списка здесь не будет работать, так как он имеет двоичный байтовый массив. Вам понадобится IComparer интерфейс для оказания помощи. Вот хорошее решение для такой сортировки:

c# - сортировка списка байтов или списка байтовых массивов - переполнение стека[^]