2015-11-16 6 views
-1

Я пытаюсь создать и сохранить текстовый файл по специальному пути, но он не работает.Как сохранить текстовый файл по специальному пути

StreamWriter file = new StreamWriter(@"C:\\Users\\log.txt"); 
     file.Write("Hi macho"); 
     file.Close(); 

Если я пишу это так, что экономить на проекте Проекты \ журнала \ журнала \ Bin \ Debug

StreamWriter file = new StreamWriter("log.txt"); 
     file.Write("Hi macho"); 
     file.Close(); 

enter image description here

+1

Какое сообщение об ошибке отображается? Я бы УГАДАЛ, что это ошибка разрешения, которая показана? – Thomas

+0

@Thomas проверка изображения –

+0

Yup это ошибка авторизации @Thomas. Добавил бы pic в сообщение, но есть уже ожидающие редактирования. – NSNoob

ответ

4

Как показывает сообщение об ошибке у вас нет разрешения на запись в этой папке.

Если мы учитываем окна, вы обычно не записываете их в C: \ users, а в c: \ users \ yourUserName \ Documents, .....

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

using (new Impersonation(domain, username, password)) 
{ 
    // do the file access 
} 

Хотя это может открыть Пандоры ящик ТОГО и его следует избегать, таким образом, я бы настоятельно рекомендую вам писать только в папки, которые существуют для этой цели.

Кроме того, может быть с некоторыми операционными системами, что вышеуказанный метод не будет работать (UAC для туда). Тогда вы должны либо запустить приложение от имени администратора вместо или встроить привилегии администрирования regquest в приложениях манифеста ....

Немного подробнее об этом в другой StackOverflow пост: Write Access to Program Files folder

Edit: Одна маленькая деталь на этом дополнительно. Если ваша программа находится в папке программных файлов, и вы хотите войти в ту же папку, в которой находится ваша программа, вы столкнетесь с той же проблемой. Таким образом, например, у вас есть ваша программа, расположенная в c: \ program files \ myProgram, вы не можете войти в нее без специальных разрешений (как правило, прав администратора).

+0

В качестве комментария здесь (не часть ответа). Когда я наткнулся на то, что я не могу написать в свою собственную папку с папками, я действительно нашел, что счетчик поведения окон интуитивно понятен (я получаю, что нельзя писать в файлы c: \ program без прав администратора, но в вашей собственной подпапке I ожидал, что он сработает, и вам все равно не нужны разрешения администратора). – Thomas

0

Вы можете сохранить текстовый файл по специальному пути, где у вас есть права доступа. Там вы можете передать его через метод streamwriter.

StreamWriter file = new StreamWriter(@"C:\log.txt"); 
     file.Write("Hi macho"); 
     file.Close(); 
+0

i change file save path.but такая же ошибка Происходит –

+0

вы можете выслать свою ошибку? – Juran

+0

сообщение об ошибке «Доступ к такому пути C: \ log.txt отрицается» try { Файл StreamWriter = новый StreamWriter (@ "C: \ log.txt"); файл.Write («Привет мачо»); file.Close(); } catch (Exception er) { MessageBox.Show (er.Message); } –