Unity Android 文件的读写

发布于:2025-09-05 ⋅ 阅读:(15) ⋅ 点赞:(0)

配置AndroidManifest 文件

在Assets 目录下查找AndroidManifest 文件,添加权限声明,在application 节点中添加requestLegacyExternalStorage 属性。

<!-- 权限声明 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

<application android:requestLegacyExternalStorage="true">...</application>

权限检查及申请

Android 6 及以上版本需要动态申请读写权限。

if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead))
{
    Permission.RequestUserPermission(Permission.ExternalStorageRead);
}
yield return new WaitUntil(() => Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead));
if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite))
{
    Permission.RequestUserPermission(Permission.ExternalStorageWrite);
}
yield return new WaitUntil(() => Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite));

*开启权限后需重启软件。

文件目录路径

AndroidJavaClass androidJavaClass = new AndroidJavaClass("android.os.Environment");
AndroidJavaObject androidJavaObject = androidJavaClass.CallStatic<AndroidJavaObject>("getExternalStorageDirectory");//根目录
/* Downloads 目录
* AndroidJavaObject androidJavaObject = androidJavaClass.CallStatic<AndroidJavaObject>("getExternalStoragePublicDirectory", androidJavaClass.GetStatic<string>("DIRECTORY_DOWNLOADS"));
*/
path = androidJavaObject.Call<string>("getAbsolutePath");
filePath = Path.Combine(path, fileName);

写入

try
{
    File.WriteAllText(filePath, contents);
}
catch (Exception e)
{

}

//[Serializable]
//public class SaveData
//{
//    public string createTime;
//    public string contents;
//}

//try
//{
//    BinaryFormatter bf = new BinaryFormatter();
//    FileStream file = File.Create(filePath);
//    SaveData data = new SaveData()
//    {
//        createTime = DateTime.Now.ToString(),
//        contents = "The Life Of A Showgirl available Oct. 3"
//    };
//    bf.Serialize(file, data);
//    file.Close();
//}
//catch (Exception e)
//{

//}

读取

if (File.Exists(filePath))
{
    contents = File.ReadAllText(filePath);
    
    //BinaryFormatter bf = new BinaryFormatter();
    //FileStream file = File.Open(filePath, FileMode.Open);
    //SaveData data = (SaveData)bf.Deserialize(file);
    //file.Close();
    //Debug.Log(data.contents);
}

网站公告

今日签到

点亮在社区的每一天
去签到