@Chalabi

Почему в конце названия файла добавляется 1, на C# WPF?

"У меня есть метод который разархивировает файл из архива нужного формата, потом удаляет из нее первые 9 символов, и еще в конце удаляет все символы до "_", потом метод ищет все "-" и "_" и заменяет иx на " ", и в конце сохраняет ее в указанной папке" - по сути все должно работать таким образом, но метод все это делает так и в конце добавляет к названию файла "1", это касается всех файлов, я не знаю как это исправить. Вот сам метод:
public static void UzipFiles(string[] zipPath, string directoryOutPath, string filterExtension, bool copyAll = false)
        {
            //zipPath - папка с архивами
            //directoryOutPath - где будут сохронятся уже готовые файлы
            //filterExtension - формат файлов которые будут разархивированы из архива
            //copyAll - если true, то программа обработает все файлы нужного формата, если false, то программа обратоает первый файл нужного формата


            for (int i = 0; i < zipPath.Length; i++)
            {
                var outDir = new DirectoryInfo(directoryOutPath);
                if (!outDir.Exists)
                    outDir.Create();

                var archFile = new FileInfo(zipPath[i]);
                if (!archFile.Exists)
                    return;

                using (var f = File.Open(archFile.FullName, FileMode.Open))
                {
                    ZipArchive arch = new ZipArchive(f, ZipArchiveMode.Read);
                    int c = 1;
                    foreach (var entry in arch.Entries.Where(e => e.Name.ToLower().EndsWith(filterExtension.ToLower())))
                    {
                        using (Stream sr = entry.Open())
                        {
                            var ext = "";
                            try
                            {
                                ext = new FileInfo(entry.Name).Extension;
                            }
                            catch (Exception)
                            {
                                MessageBox.Show("Что-то пошло не так!", "Ошибка"); 
                            }

                            string archFileNameT = Path.GetFileNameWithoutExtension(archFile.Name).Remove(0, 9);
                            archFileNameT = archFileNameT.Remove(archFileNameT.LastIndexOf("_"));

                            char[] chars = new char[archFileNameT.Length];
                            for (int j = 0; j < archFileNameT.Length; j++)
                            {
                                if (archFileNameT[j] == '-')
                                    chars[j] = ' ';
                                else if (archFileNameT[j] == '_')
                                    chars[j] = ' ';
                                else if (archFileNameT[j] == '1')
                                    chars[j] = ' ';
                                else
                                    chars[j] = archFileNameT[j];
                            }
                            string archFileName = new string(chars);
                            archFileName.Trim();

                            string outFileName = archFileName + (copyAll ? c++.ToString() : "") + ext;
                            using (Stream sw = File.Create(outDir.FullName + "\\" + outFileName))
                            {
                                while (true)
                                {
                                    int data = sr.ReadByte();
                                    if (data == -1)
                                        break;
                                    sw.WriteByte((byte)data);

                                }
                            }
                        }
                        if (!copyAll)
                            break;
                    }
                }
            }
        }
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Скорее всего причина в этом: c++.ToString()
не знаю зачем это, попробуйте указать строку так:
string outFileName = archFileName + ext;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы