2015-06-16 5 views
1

Я получаю Несанкционированное Exception Access, когда я пытаюсь открыть файлC# Несанкционированный доступ Исключение

public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     short numberOfLines = Int16.Parse(textBox1.Text); 
     webBrowser = new WebBrowser[numberOfLines]; 
     if (!Directory.Exists(logPath)) 
     { 
      System.IO.Directory.CreateDirectory(logPath); 
     } 
     for (short i = 0; i < numberOfLines; i++) 
     { 
      System.IO.StreamWriter file = new System.IO.StreamWriter(logPath); 
      runBrowserThread(i); 
     } 
    } 

он говорит, доступ к пути был запрещен. Где может быть проблема?

+4

гм, мне кажется, что Вы не авторизованы для доступа к файлу. – DLeh

+4

StreamWriter использует путь к файлу, а не путь к каталогу. Это не документировано в StreamWriter, но [многие из файла apis] (https://msdn.microsoft.com/en-us/library/b9skfh7s (v = vs.110) .aspx) бросают UnauthorizedAccessException, когда вы пытаетесь откройте каталог как файл. –

+1

Существует ли 'logPath' путь к каталогу (' Directory.Exists (logPath) ',' Directory.CreateDirectory (logPath) ') или к файлу (' new StreamWriter (logPath) ')? Это не может быть одновременно одновременно. – stakx

ответ

0

Этот код пытается записать в каталог, как если бы это был файл.

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

if (!Directory.Exists(logPath)) 
{ 
    System.IO.Directory.CreateDirectory(logPath); 
} 
for (short i = 0; i < numberOfLines; i++) 
{ 
    System.IO.StreamWriter file = new System.IO.StreamWriter(logPath); 
    runBrowserThread(i); 
} 

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

string logPath = @"c:\Logs"; 
string logFile = Path.Combine(logPath, DateTime.UtcNow.ToString("HH-mm-ss") + ".log"); 

// Directory.CreateDirectory(logPath); 

using (TextWriter writer = new StreamWriter(logFile)) 
{ 
    writer.WriteLine("testing random log"); 
} 

// Process.Start(logFile); 
+0

Пришлось иметь больше кофе сегодня -_- – Nemanja

+0

Исключенное заблуждение вводит в заблуждение, я тоже его поймал довольно плохо :) –

Смежные вопросы