2016-03-08 2 views
0

Я использовал System.Environment.SpecialFolder.Personal для создания файла и чтения/записи в этот файл.Пользовательская папка/файл в xamarin.forms

Ссылка:Working with files

Он работает, как я могу читать из файла в моем приложении. Но я не могу найти или перейти к этому файлу с моего устройства Android.

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

ответ

2

Чтобы загрузить файл на внешнем устройстве Android:

var documentsPath = Android.OS.Environment.ExternalStorageDirectory.ToString(); 
var filePath = Path.Combine(documentsPath, "test.txt"); 
System.IO.File.WriteAllText (filePath, "Om Sai Ram"); 

добавить следующее разрешение:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Чтобы создать новую папку:

var dir = new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/Sample/"); 
    if (!dir.Exists()) 
     dir.Mkdirs(); 
    if(dir.Exists()) 
     dir.Delete(); 
+0

Я отлаживал код, проверяя путь n, он говорит '/ data/user/0/appName/files'. Когда я пытаюсь просмотреть это местоположение, я не мог найти такого места. – Arti

+0

@Arti Я отредактировал свой ответ, пожалуйста, проверьте. –

+0

благодарим вас за быстрый ответ. Это мне очень помогло. Можно ли создать папку с помощью этого метода? – Arti

0

Я был глядя на это, и я не уверен, что это можно сделать в Формах, если у вас нет определенного кода для конкретной платформы. Ваш предыдущий ответ был только о Android (хотя вы четко спрашивали о Формах). Вот что я выяснил до сих пор ...

Существует пакет PCLStorage NuGet, который позволит вам выполнять файловые операции в вашем PCL. Я использовал это успешно ...

Проблема в том, что файлы недоступны для пользователей. В соответствии с doco я сначала попробовал «IFolder RootFolder = FileSystem.Current.LocalStorage;». Я прочитал, если вы используете внешнее хранилище (которое не обязательно является внешним, но является «внешним» для вашей домашней папки), тогда оно доступно для пользователя, и через intellisense я обнаружил, что существует опция RoamingStorage. Я пробовал это, и он работал в UWP, но придумал необработанное исключение на Android, поэтому я не уверен, как разрешить эту ситуацию (кроме погружения в код, специфичный для платформы, который, в свою очередь, побеждает с использованием PCLStorage).

Я также рассматривал Dropbox для облегчения проблемы, однако я все еще не уверен, как ее реализовать. Я не нашел подходящих учебников по этому вопросу, и попытка выяснить, что делать с помощью только фрагментов, сложно.

0

У меня на самом деле есть решение для этого сейчас (вроде). Мне еще не удалось заставить Dropbox работать (Xamarin работает над новым пакетом Dropbox nuget), но я смог загрузить внешние файлы с помощью пакета namet Xamarin.Plugin.Filepicker (убедитесь, что вы используете его, как пара других тоже не работает, и это не работает так, чтобы начать с!). Я получил эту работу с Android и UWP (я нашел это решение, поскольку MicroSoft теперь рекомендует использовать filepicker для доступа к внешним файлам). Я еще не пробовал iOS.

Примечание: вы не сможете записать файл, но можете импортировать его для обработки, где бы он ни редактировался. Также обратите внимание, что tostring() не работает - он возвращает только коды ASCII, поэтому вам нужно явно передать результат в char. Данные возвращаются в массиве, а не как поток.

Я считаю, что также можно писать в файлы, однако вам придется писать все сами - в настоящее время нет пакета, который делает это. См. https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/, чтобы вы начали.

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