Unity android平台读取文件

一、代码:

1.通过C#的IO进行文件内容读取:

using UnityEngine.UI;

public class Test : MonoBehaviour {
    Text text;
    string result = "";
    // Use this for initialization
    void Start () {
        text = GetComponent<Text>();
        ReadIP();
    }

    void ReadIP()
    {
#if UNITY_EDITOR
        string filepath = Application.dataPath + "/StreamingAssets" + "/ip.txt";
#elif UNITY_IPHONE
        //没有试过 
        string filepath = Application.dataPath +"/Raw"+"/ip.txt";
#elif UNITY_ANDROID
        //android路径:/storage/emulated/0/Android/data/包名/files/ip.txt
        string filepath =  Application.persistentDataPath + "/ip.txt";
#endif
        result = filepath;
        if (File.Exists(filepath))
        {
            result += "\n" + File.ReadAllText(filepath);
        }
         
    }
	
	// Update is called once per frame
	void Update () {
        text.text = result;

    }
}

二、参考博客:

1.https://blog.csdn.net/u014147126/article/details/81276707

 

三、注意

1.代码中的路径设置PlayerSetting下:

2、Application.persistentDataPath 路径(推荐使用)
此属性返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。这个路径可读、可写,但是只能在程序运行时才能读写操作,不能提前将数据放入这个路径。在IOS上是应用程序的沙盒,可以被iCloud自动备份,可以通过同步推送一类的助手直接取出文件;在Android上的位置是根据Project Setting里设置的Write Access路径,可以设置是程序沙盒还是sdcard,注意:如果在Android设置保存在沙盒中,那么就必须root以后才能用电脑取出文件,因此建议写入sdcard里。一般情况下,建议将获得的文件保存在这个路径下,例如可以从StreamingAsset中读取的二进制文件或者从AssetBundle读取的文件写入PersistentDatapath。

3、Application.temporaryCachePath 路径
此属性返回一个临时数据的缓存目录,跟Application.persistentDataPath类似,但是在IOS上不能被自动备份。

4、 /sdcard/.. 路径
表示Android手机的SD卡根目录。

5、 /storage/emulated/0/.. 路径
表示Android手机的内置存储根目录。 
以上各路径中的资源加载方式都可以用WWW类加载,但要注意各个平台路径需要加的访问名称,例如Android平台的路径前要加”jar:file://”,其他平台使用”file://”。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中,可以使用C#的System.IO命名空间下的类来进行文件读写操作。读取安卓本地设备文件夹时,需要使用安卓系统提供的Java接口(AndroidJavaObject、AndroidJavaClass等)来获取本地设备的文件路径。 以下是一个简单的例子,演示如何在Unity读取安卓本地设备文件夹: ```c# using System.IO; using UnityEngine; public class ReadFile : MonoBehaviour { void Start() { // 获取安卓本地设备文件夹路径 AndroidJavaClass environment = new AndroidJavaClass("android.os.Environment"); AndroidJavaObject directory = environment.CallStatic<AndroidJavaObject>("getExternalStorageDirectory"); string path = directory.Call<string>("getAbsolutePath") + "/myfile.txt"; if (File.Exists(path)) { string contents = File.ReadAllText(path); // 读取文件内容 Debug.Log(contents); // 输出文件内容 } else { Debug.Log("File not found"); } } } ``` 在上面的示例中,我们首先使用安卓系统提供的Java接口获取本地设备的文件夹路径,然后使用File类的Exists方法检查文件是否存在。如果文件存在,我们使用File类的ReadAllText方法读取文件内容,并使用Debug.Log方法将其输出到控制台。如果文件不存在,则输出“File not found”。 如果要进行文件写入操作,可以使用File类的WriteAllText方法。以下是一个简单的例子,演示如何在Unity中写入安卓本地设备文件夹: ```c# using System.IO; using UnityEngine; public class WriteFile : MonoBehaviour { void Start() { // 获取安卓本地设备文件夹路径 AndroidJavaClass environment = new AndroidJavaClass("android.os.Environment"); AndroidJavaObject directory = environment.CallStatic<AndroidJavaObject>("getExternalStorageDirectory"); string path = directory.Call<string>("getAbsolutePath") + "/myfile.txt"; string contents = "Hello, world!"; // 文件内容 File.WriteAllText(path, contents); // 写入文件内容 } } ``` 在上面的示例中,我们首先使用安卓系统提供的Java接口获取本地设备的文件夹路径,然后使用File类的WriteAllText方法将文件内容写入到指定的文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值