Страница 1 из 1

путь к текстовому файлу для записи и чтения

СообщениеДобавлено: 27 сен 2021, 19:04
labinzevvAlex
Всем привет! Недавно начал разбираться со сборкой под андроид. Ну и как всегда подводные камни объясните кто нить, как правильно пользоваться
этой строкой string dictEn = "jar:file://" + Application.dataPath + "!/assets/dictionaryEn.txt"; Нигде подробной инструкции нет, только эта строка,
а дальше типа сам догоняй... Куда помещать файл dictionaryEn.txt в самой юнити. Что за восклицательный знак перед assets. Нужен какой либо доп. код для
этой строки. (Ещё много попадается класc WWW но он типа уже устаревший, да и как я понял это для внешних ресурсов (с сервера), а мне нужно чтение и запись локальных.txt на устройстве андроид). Мож где и фигни нагородил, только начинаю разбираться в теме, если что сильно не пинайте. А по возможности помогите разобраться. Заранее спасибо!)

Re: путь к текстовому файлу для записи и чтения

СообщениеДобавлено: 27 сен 2021, 20:51
1max1

Re: путь к текстовому файлу для записи и чтения

СообщениеДобавлено: 27 сен 2021, 21:01
labinzevvAlex
1max1 писал(а):https://docs.unity3d.com/Manual/StreamingAssets.html


Да был я там... Не находит путь к файлам, по всякому пробовал.
По этому и спрашиваю jar:file://" + Application.dataPath + "!/assets" что с этой строкой делать? Куда файлы в проекте ложить? в папку !/assets?
или куда?

Re: путь к текстовому файлу для записи и чтения

СообщениеДобавлено: 28 сен 2021, 01:25
1max1
Если ты хочешь загружать их со стрим ассетс, то ложить надо именно в папку StreamingAssets. И загрузка обычно происходит через WebRequest (или старый WWW) http://answers.unity.com/answers/1347128/view.html

Re: путь к текстовому файлу для записи и чтения

СообщениеДобавлено: 28 сен 2021, 19:29
labinzevvAlex
1max1 писал(а):Если ты хочешь загружать их со стрим ассетс, то ложить надо именно в папку StreamingAssets. И загрузка обычно происходит через WebRequest (или старый WWW) http://answers.unity.com/answers/1347128/view.html


Спасибо за помощь)
Но пока глухо...
Не поможешь понять, что не так с кодом?
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;

public class dictionary : MonoBehaviour
{
    string fileLocation_queryTop;
    string assetPath;
    string _query_TOP;
    string filePath;

    private IEnumerator LoadFile()
    {
        filePath = Path.Combine(Application.streamingAssetsPath, "dictionaryEn.txt");

        if (filePath.Contains("://"))
        {
            WWW www = new WWW(filePath);
            yield return www;
            if (string.IsNullOrEmpty(www.error))
            {
                _query_TOP = www.text;
            }
        }
        else
        {
            _query_TOP = File.ReadAllText(filePath);
        }
    }

  void Update()
    {
        fileLocation_queryTop = "/Streaming Assets/dictionaryEn.txt";
        assetPath = "jar:file://" + Application.dataPath + "!/assets";
        _query_TOP = File.ReadAllText(assetPath + fileLocation_queryTop);

        LoadFile();
        engWordTextOut.text = _query_TOP;  
        /////////////
    }
}
 

android не находит путь к dictionaryEn.txt Пробовал и в Start, то же самое
Где ошибка, может порядок не тот или в чём может быть дело, вроде всё по мануалу...

Re: путь к текстовому файлу для записи и чтения

СообщениеДобавлено: 28 сен 2021, 20:28
1max1
Папка должна называться StreamingAssets, без пробелов, и лежать должна в папке Assets.
Синтаксис:
Используется csharp
public class Test : MonoBehaviour
{
    string result;

    void Start()
    {
        StartCoroutine(c_LoadText("file.txt"));
    }

    void Update()
    {

    }

    IEnumerator c_LoadText(string fileName)
    {
        var path = Application.streamingAssetsPath + "/" + fileName;

        if (Application.isMobilePlatform)
        {
            var webRequest = UnityWebRequest.Get(path);

            yield return webRequest.SendWebRequest();

            result = webRequest.downloadHandler.text;

            print(result);
        }
        else
        {
            result = File.ReadAllText(path);

            print(result);
        }
    }
}
 

Re: путь к текстовому файлу для записи и чтения

СообщениеДобавлено: 28 сен 2021, 21:01
labinzevvAlex
1max1 писал(а):Папка должна называться StreamingAssets, без пробелов, и лежать должна в папке Assets.
Синтаксис:
Используется csharp
public class Test : MonoBehaviour
{
    string result;

    void Start()
    {
        StartCoroutine(c_LoadText("file.txt"));
    }

    void Update()
    {

    }

    IEnumerator c_LoadText(string fileName)
    {
        var path = Application.streamingAssetsPath + "/" + fileName;

        if (Application.isMobilePlatform)
        {
            var webRequest = UnityWebRequest.Get(path);

            yield return webRequest.SendWebRequest();

            result = webRequest.downloadHandler.text;

            print(result);
        }
        else
        {
            result = File.ReadAllText(path);

            print(result);
        }
    }
}
 


Спасибо ОГРОМНОЕ! Выручил!