Asyraf Patt Ответов: 3

C# winform: удалить временный файл в списке show


Как на самом деле я могу удалить временный файл с помощью C# ?. Я уже получаю список временных файлов с помощью (System.IO.Path.GetTempPath), и код показан ниже. Итак, как мне нужно удалить файл с помощью C# ?

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

if(checkBox2.Checked){
    DirectoryInfo Dir = new DirectoryInfo(System.IO.Path.GetTempPath());

    FileInfo[] Files = Dir.GetFiles();

    foreach (FileInfo file in Files)
    {
        listView1.Items.Add(file.Name);
        File.Delete(file.Name);
    }
}

3 Ответов

Рейтинг:
24

sreeyush sudhakaran

<pre> 
static void Main(string[] args)
        {
            List<string> listView1 = new List<string>();
            DirectoryInfo Dir = new DirectoryInfo(System.IO.Path.GetTempPath());

            FileInfo[] Files = Dir.GetFiles();
            int faildelcount = 0;

            foreach (FileInfo file in Files)
            {
                try
                {
                    File.Delete(file.Name);
                }
                catch (Exception ex)
                {
                    faildelcount++;
                }
            }

            Console.WriteLine("Temp files cleared successfully");
            if(faildelcount > 0)
            Console.WriteLine("Unable to delete {0} files", faildelcount.ToString());
            Console.ReadLine();
            
        }


Рейтинг:
16

OriginalGriff

Попробуй:

File.Delete(file.Name);


Asyraf Patt

если (checkBox2. Checked){
Directoryinfoкласс реж = новый Directoryinfoкласс(системы.ИО.Путь.GetTempPath());

FileInfo[] Files = Dir. GetFiles();

foreach (FileInfo file in Files)
{
мыши listview1.Предметы.Добавить(file.Name);
Файл.Удалить(file.Name);
}
}


почему файл в C:\Users\Administrator\AppData\Local\Temp все еще не удалили ?

Thomas Daniels

Вероятно, потому, что GetTempPath () не возвращает папку, которую вы упомянули в своем комментарии... На моем компьютере он возвращается C:\Windows\Temp и не исключено, что он и на вашем тоже - проверьте эта документация чтобы узнать, как определяется местонахождение Геттемппата.

OriginalGriff

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

Michael_Davies

Существует несколько временных каталогов, System. IO. Path.GetTempPath () возвращает первый временный каталог, который он находит в списке поиска;

Этот метод проверяет наличие переменных окружения в следующем порядке и использует первый найденный путь:

Путь, указанный переменной среды TMP.
Путь, указанный переменной среды TEMP.
Путь, указанный переменной среды USERPROFILE.
каталог Windows.

Переменная Temp обычно устанавливается в системный каталог temp C:\Windows\Temp и вам нужны права доступа, прежде чем вы сможете даже перечислить содержимое.

Существуют и другие временные параметры для пользователя в папке & lt;User Profile Dir & gt;\AppData в локальных и перемещаемых подкаталогах. Возможно, было бы лучше проверить их на наличие временного каталога, а затем удалить из него, единственное, что предотвратило бы удаление файла там, было бы то, что он был открыт другим процессом.

Чтобы получить доступ к Windows\Temp, см. https://msdn.microsoft.com/en-us/library/c1f66bc2(v=против 110). aspx

BillWoodruff

ИМХО, этот комментарий заслуживает того, чтобы быть опубликованным в качестве решения и быть проголосованным !

Рейтинг:
1

Asyraf Patt

string tempfolder = ("C:\\Users\\Administrator\\AppData\\Local\\Temp");
          string[] tempfiles = Directory.GetFiles(tempfolder, "*.*", SearchOption.AllDirectories);


          foreach (string filePath in Directory.GetFiles(tempfolder, "*.*", SearchOption.AllDirectories))
          {
              try
              {
                  FileInfo currentFile = new FileInfo(filePath);
                  currentFile.Delete();

              }
              catch (Exception ex)
              {
                  Debug.WriteLine("Error on file: {0}\r\n   {1}", filePath, ex.Message);
              }

          }