dejf111 Ответов: 2

Как автоматически поместить следующий номер за именем файла?


Здравствуйте, у меня есть проблема с именем файла. Я хотел бы поставить следующий номер к имени файла. Мой код не сработал.

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

 int value = 0;
for (int i = 1; i < 10; i++)
   {
   value = i;
   };
            filePath_output = Path.GetFileName(filePath_input);
            filePath_output = Path.GetDirectoryName(filePath_input) + "\\" + "Vystup"+ value);
            
            this.textBox2.Text = filePath_output;

Pete O'Hanlon

Что вы имеете в виду, когда говорите, что это не работает? Что вы ожидаете увидеть, когда запустите его?

dejf111

Я хотел бы видеть "filename n" n=серия чисел зависит от количества сохранений
но это ничего не значит потому что программа ожидала чего то другого

dejf111

Им идиот :D так жаль, что я это вижу

Pete O'Hanlon

Ты же не идиотка. Иногда нужно просто объяснить проблему кому-то другому, чтобы увидеть ее.

2 Ответов

Рейтинг:
2

Richard Deeming

Ваш for цикл на самом деле ничего не делает - вы можете также назначить 9 к value переменная для начала.

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

public static string AppendFileNumber(string filePath, int fileNumber)
{
    string directory = Path.GetDirectoryName(filePath);
    string fileName = Path.GetFileNameWithoutExtension(filePath);
    string extension = Path.GetExtension(filePath);
    return Path.Combine(directory, fileName + " " + fileName + extension);
}

...

int value = 9;
this.textBox2.Text = AppendFileNumber(filePath_input, value);


Рейтинг:
12

Pete O'Hanlon

Если то, что вам нужно, это получить что-то вроде следующего:

c:\myfolder\file.doc
c:\myfolder\file1.doc
c:\myfolder\file2.doc
тогда ваша логика требует совсем немного работы. Во-первых, разбейте вашу проблему.

Шаг 1. файл уже существует?
public string GetUniqueFilename(string file)
{
  if (File.Exists(file))
  {
    // The file already exists, so get a new filename
  }
  return file;
}
Следующий этап состоит в том, чтобы разделить имя файла, расширение и путь к нему на их самые основные части:
string folder = Path.GetDirectoryName(file);
string fileName = Path.GetFileNameWithoutExtension(file);
string extension = Path.GetExtension(file);
Теперь вам нужно использовать простой цикл для итерации и создания нового имени файла.
int fileCounter = 1;
while (File.Exists(file))
{
  file = Path.Combine(folder, $"{fileName}{fileCounter}{extension}");
  fileCounter++;
}
Теперь этот цикл будет продолжаться до тех пор, пока он не найдет уникальное имя файла, и в этот момент он завершится. В качестве оптимизации вы, вероятно, заметите, что можете удалить исходный файл.Существует проверка и оставьте это полностью до конца while петля.