2015-07-31 2 views
5

Так что я пытаюсь создать файл, и я получаю System.UnauthorizedAccessException: доступ к пути «/ DownloadJitters» отрицается. Я не уверен, что это вопрос разрешений (я попытался написать внешнее хранилище на случай, если это не сработало) или что-то еще. Также я пытаюсь найти хорошее место для записи этих файлов, так как я бы хотел, чтобы они не были легко найдены. Есть идеи? Вот код, а также:Xamarin: Android: System.UnauthorizedAccessException: доступ к пути отрицается

public void favouriteList(MainActivity av, Ordering o, string favouriteName, string totalCost, JittersListView jlv) 
    { 
     //Checks Directory exists 
     if (File.Exists(Android.OS.Environment.DirectoryDownloads + "/Jitters/FavouritesListAdded.txt") == false) 
     { 
      Directory.CreateDirectory(Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/"); 
      File.Create(Android.OS.Environment.DirectoryDownloads + "/Jitters/FavouritesListAdded.txt"); 
     } 

     if (File.Exists(Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/" + favouriteName + ".txt") == false) 
     { 
      var fav = File.Create(Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/" + favouriteName + ".txt"); 
      fav.Close(); 
      string file = Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/" + favouriteName + ".txt"; 
      string added = null; 
      int current = 0; 
      while (true) 
      { 
       if (current < jlv.Count) 
       { 
        JittersListItem jli = jlv[current]; 
        added += jli.Top + "|" + jli.Bottom + "|" + jli.itemPic + "|" + jli.itemDes + System.Environment.NewLine; 
        current++; 
       } 
       else 
       { 
        break; 
       } 
      } 
      File.AppendAllText(file, favouriteName + "|" + totalCost + added); 
     } 
     else 
     { 
      new AlertDialog.Builder(av) 
        .SetMessage("Please use a different name, this one has been taken.") 
        .Show(); 
     } 
    } 
+0

Каковы разрешения для этой папки? – BugFinder

+0

Честно говоря, я не знаю. Это первый раз, когда я попытался создать файл –

+0

Идентификатор проверки, а затем права на папку. – BugFinder

ответ

6

Ok Я установил ее, изменив расположение экономии на System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal)

Не спрашивай меня, почему это работает, когда они нужны то же разрешение, но он сделал ,

+0

Идет, чтобы как-то доказать свои разрешения на папку/Загрузить папку. – BugFinder

+0

Это для хранения в внутренней памяти приложения. @Euan вопрос был другим. На самом деле он пытается хранить во внешней памяти. – Takermania

0

Это выглядит как ошибка копирования и вставки - вы должны научиться реорганизовать общий код и выражения в одно значение и использовать его.

//Checks Directory exists 
if (File.Exists(Android.OS.Environment.DirectoryDownloads + "/Jitters/FavouritesListAdded.txt") == false) 
{ 
    Directory.CreateDirectory(Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/"); 
    File.Create(Android.OS.Environment.DirectoryDownloads + "/Jitters/FavouritesListAdded.txt"); 
} 

Давайте предположим, что Android.OS.Environment.DirectoryDownloads имеет значение /Downloads. Теперь идите через код построчно (вы должны действительно сделать это с помощью отладчика):

File.Exists(Android.OS.Environment.DirectoryDownloads + "/Jitters/FavouritesListAdded.txt") 

Значение параметра здесь будет "/Downloads/Jitters/FavouritesListAdded.txt" - OK

Directory.CreateDirectory(Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/"); 

Там нет слэша на символьной строки здесь, поэтому значение будет: /DownloadsJitters/FavouriteList - Я предполагаю, что вы, вероятно, означали, что это будет /Downloads/Jitters/FavouriteList.

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

+0

ok Я добавил в косые черты и ошибка все еще происходит:/except вместо "/ DownloadJitters" его просто "/ Скачать" –

+0

Та же ошибка? С тем же путем? – adelphus

+0

Исправлен комментарий выше той же ошибки, но с «/ Download» в качестве пути –

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