2010-11-25 3 views
1

Я получаю доступ запрещен всякий раз, когда пытаюсь удалить файл после завершения чтения его на C:\inetpub\wwwroot\Project\temp\. I Close() и Dispose() StreamReader правильно? Я также дал полное разрешение для учетной записи NETWORK SERVICE? Может кто-нибудь мне помочь?Получение доступа запрещается при попытке удалить файл

reader = new StreamReader(path + fileName); 
DataTable dt = new DataTable(); 
      String line = null; 
      int i = 0; 

      while ((line = reader.ReadLine()) != null) 
      { 
       String[] data = line.Split(','); 
       if (data.Length > 0) 
       { 
        if (i == 0) 
        { 
         dt.Columns.Add(new DataColumn()); 
         foreach (object item in data) 
         { 
          DataColumn c = new DataColumn(Convert.ToString(item)); 
          if (Convert.ToString(item).Contains("DATE")) 
          { 
           c.DataType = typeof(DateTime); 
          } 
          else { c.DataType = typeof(String); } 
          dt.Columns.Add(c); 
         } 
         dt.Columns.Add(new DataColumn("CreatedDate", typeof(DateTime))); 
         i++; 
        } 
        else 
        { 
         DataRow row = dt.NewRow(); 
         row[0] = ""; 
         for (int j = 0; j < data.Length; j++) 
         { 
          if (dt.Columns[j + 1].DataType == typeof(DateTime)) 
          { 
           row[j + 1] = Convert.ToDateTime(data[j]); 
          } 
          else 
          { 
           row[j + 1] = data[j]; 
          } 
         } 
         row[data.Length + 1] = DateTime.Now.ToString(); 
         dt.Rows.Add(row); 
        } 
       } 
      } 
      DataAccess dataAccess = new DataAccess(Constant.CONNECTION_STRING_NAME); 
      dataAccess.WriteBulkData(dt, Constant.TABLE); 
      reader.Close(); 
      reader.Dispose(); 
      File.Delete(path); 
+1

его, вероятно, все еще в использовании – 2010-11-25 10:04:34

+1

Как Микроген сказал, его, вероятно, до сих пор. Раньше у меня были проблемы, когда для правильного выпуска файла требуется немного времени, попробуйте поместить задержку в beofre, вы попробуете и удалите его, чтобы убедиться, что это – w69rdy 2010-11-25 10:12:56

ответ

4

Вызов метода File.Delete должен принимать путь + имя_файла в качестве параметра. Это связано с тем, что в соответствии с этой ссылкой http://msdn.microsoft.com/en-us/library/system.io.file.delete.aspx путь - это полный путь, включая имя файла, а ваша переменная path содержит только имя папки.

+0

Черт, я был настолько глуп, спасибо большое ! – Leo 2010-11-25 10:14:45

2

Вы удалите File.Delete(path); не File.Delete(path + filename);

1

Открываешь

reader = new StreamReader(path + fileName); 

Но вы закрываете

File.Delete(path); 
0

У меня также была проблема, поэтому я наткнуться на этот пост на сервере , Я добавил следующую строку кода до и после копирования/удаления.

Удалить

File.SetAttributes(file, FileAttributes.Normal); 
File.Delete(file); 

Copy

File.Copy(file, dest, true); 
File.SetAttributes(dest, FileAttributes.Normal); 

Ссылка: Why is access to the path denied?