Pico VR眼睛使用的是Android系统。在用Unity打包出apk后进行相关程序的开发。开发过程中遇到了参数的读取写入等操作,如何进行处理,这里介绍下自己的经历,仅供参考。

一、关于读写权限。

Pico可以用USB连接到电脑,读取内部存储和mini SDCard等路径中内容,可以在各个路径中新建文件夹,但是却不能直接新建txt文本(这个文本用于存储程序的参数等)。

通过在PC端新建txt后,然后复制到对应的目录中即可。

二、关于Android中各类路径的读取

Unity中操作读取Android目录,包括内部存储路径和外部路径。

1.获取内部存储路径,返回如/storage/emulatged/0/Android/Data/com.CXX.XXX/路径

   //仅仅获取内部存储地址private String GetAndroidContextExternalFilesDir(){string path = "";if (Application.platform == RuntimePlatform.Android){try{using (AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")){using (AndroidJavaObject ajo = ajc.GetStatic<AndroidJavaObject>("currentActivity")){path = ajo.Call<AndroidJavaObject>("getExternalFilesDir", null).Call<string>("getAbsolutePath");}}}catch (Exception e){Debug.LogWarning("Error fetching native Android external storage dir: " + e.Message);}}return path;}

2.可以根据对应的标志优先获取外部存储路径,无存储卡时,返回内部存储路径

 private string GetAndroidExternalFilesDir(){
#if UNITY_ANDROIDusing (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")){try{using (AndroidJavaObject context = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity")){// Get all available external file directories (emulated and sdCards)AndroidJavaObject[] externalFilesDirectories = context.Call<AndroidJavaObject[]>("getExternalFilesDirs", null);AndroidJavaObject emulated = null;AndroidJavaObject sdCard = null;for (int i = 0; i < externalFilesDirectories.Length; i++){AndroidJavaObject directory = externalFilesDirectories[i];using (AndroidJavaClass environment = new AndroidJavaClass("android.os.Environment")){// Check which one is the emulated and which the sdCard.bool isRemovable = environment.CallStatic<bool>("isExternalStorageRemovable", directory);bool isEmulated = environment.CallStatic<bool>("isExternalStorageEmulated", directory);if (isEmulated)emulated = directory;else if (isRemovable && isEmulated == false)sdCard = directory;}}// Return the sdCard if availableif (sdCard != null)return sdCard.Call<string>("getAbsolutePath");elsereturn emulated.Call<string>("getAbsolutePath");}}catch (Exception e){Debug.LogWarning("Error fetching native Android external storage dir: " + e.Message);return "";}}
#endif}

3.根据新建的文本路径读取文本内容

可以参考使用下面函数分割路径,获取想要的路径

    void GetFilePath(string serverIP){string path;
#if UNITY_ANDROIDstring[] sss = new string[1] { "com" };string[] sds = new string[1] { "Android" };string temp = GetAndroidExternalFilesDir();string[] src = temp.Split(sds, StringSplitOptions.None);path = "file://" + src[0] + serverIP;
#elif UNITY_IPHONEpath= "file://" + Application.streamingAssetsPath + "/" + serverIP;
#elif UNITY_STANDALONE_WIN || UNITY_EDITORpath= "file:///" + Application.streamingAssetsPath + "/" + serverIP;
#elsepath= String.Format("{0}/{1}", Application.streamingAssetsPath, serverIP);
#endiffilePath = path;}

三、通过程序动态新建文本

1.Android为每一个apk都创建一个具有新建文件权限的目录,这个目录的路径可以使用

Application.persistentDataPath来读取

2.新建文件

    public void CreateFile(string path, string info){FileInfo t = new FileInfo(path);if (!t.Exists){StreamWriter sw;//如果此文件不存在则创建try{sw = t.CreateText();//以行的形式写入信息sw.WriteLine(info);//关闭流sw.Close();//销毁流sw.Dispose();SetServerIP(path, info);}catch (Exception e){return;}}else{LoadByWWW();}}

当文件不存在时首先新建文件,然后再读取文件。

3.写入文件

 StreamWriter sw = new StreamWriter(strFilePath, false);sw.WriteLine("{0}", strIpContent);sw.Close();sw.Dispose();

当文件存在后,以上进行文本文件的写入,strFilePath为文件路径,strIpContent为写入内容

4.文件的读取通过WWW方式实现

  public void LoadByWWW(){if(filePath=="")GetFilePath("serverIP.txt");StartCoroutine(doLoadByWWW("file://" + filePath));}IEnumerator doLoadByWWW(string path){WWW w = new WWW(path);yield return w;if (w.isDone){SetServerIP(path, w.text);}}

以上零散的一些功能希望对大家有所帮助。

[Pico]读取新建写入文本文件相关推荐

  1. android studio 写文件,在Android Studio中从我自己的类读取和写入文本文件

    我一直在试图创建一个名为TextFileReaderWriter的类我想使用getters和setters来读取和写入文本文件,以便我可以调用类,并通过简单地使用setfileContents(som ...

  2. 【MATLAB】读取和写入文本文件

    在MATLAB中,来读取和写入文本文件是很简单的事.下面,就来简单介绍下.如果有其他问题,请留言. 一.读取文本文件 思路: 1.用fopen来打开一个文件句柄 2.用fgetl来获得文件中的一行,如 ...

  3. java txtreader_Java读取和写入文本文件内容

    1.Java 写入文本文件源码 import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; ...

  4. VB.NET 读写HTML 文件,VB.Net读取和写入文本文件

    StreamReader和StreamWriter类用于读取和写入数据到文本文件.这些类继承自抽象基类Stream,它支持读取和写入字节到文件流中. StreamReader类 StreamReade ...

  5. readmemh函数引用的txt格式_[转载](zz)用于读取和写入文本文件Verilog代码

    系统函数$fopen用于打开一个文件,并还回一个整数指针.然后,$fdisplay就可以使用这个文件指针在文件中写入信息,写完后,则可以使用$fclose系统关闭这个文件 例如: integer wr ...

  6. VBA使用FileSystemObject将读取或写入文本文件

    有时,我们需要将一个文本文件中的数据读取到Excel单元格中,或将指定单元格的内容按指定的格式导出到文本文件中,这时,我们就需要使用Scripting.FileSystemObject对象来进行操作. ...

  7. JAVA——一次性读取或者写入文本文件所有内容

    一次性读取文本文件所有内容 public String readFileToString(String fileName) { String encoding = "UTF-8"; ...

  8. python写文件byte_python 将字节写入文本文件

    想在文本模式打开的文件中写入原始的字节数据 将字节数据直接写入文件的缓冲区即可 >>> import sys >>> sys.stdout.write(b'Hell ...

  9. MATLAB可以进行多种文件操作,包括读取和写入文本、二进制和其他格式的文件,创建和删除文件夹等等

    常见的文件操作方法: 读取文本文件 使用 fopen 函数打开文件,然后使用 fscanf 函数读取文件中的数据.例如 fid = fopen('myfile.txt'); data = fscanf ...

最新文章

  1. linux入门(三)常见Linux指令及其用法
  2. mysql anyvalue报错_Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式
  3. WebForm中关于DataGrid的20篇经典文章
  4. TensorFlow patch块划分(transpose and reshape)
  5. mysql binlog 备份_做好mysql运维,必须熟练掌握备份和恢复,实战一次不行多来几次...
  6. php没有上级分类的联动,ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单...
  7. oracle视频教程 任务,Oracle基础教程(两位专家手把手教你完成各种常见任务)
  8. sklearn库里几种回归模型
  9. 支付宝拿技术开刀把扫码无情地革掉
  10. 手机怎么更改ip地址
  11. 会议室预定管理系统_如何灵活安排会议室,会议预约管理系统帮到你
  12. java程序设计实验报告代写_代做CS实验报告、代写java c/c++ CS课程设计作业、代写程序作业...
  13. stol函数在linux下使用,C++中进制转换问题
  14. CentOS7.6系统安装步骤
  15. 6月26日云栖精选夜读:成为一名Java高级工程师你需要学什么
  16. 项目成本管理__成本管理技术__第7条 完工尚需绩效指数(TCPI)
  17. win7 android usb驱动,在win7系统下安装手机usb驱动软件的教程
  18. 学物联网必须要知道的云平台ThingsBoard
  19. C语言使用CUDA中cufft函数做GPU加速FFT运算,与调用fftw函数的FFT做运算速度对比
  20. 小米多看|变身番茄todo计时,时钟

热门文章

  1. opencv滤镜-二值化实现黑白滤镜
  2. 性价比哪家强?富勒G93S光磁微动鼠标深度评测
  3. java根据word模板导出_java如何根据word模板生成word文档
  4. 阿里巴巴高级技术专家李浩:千牛开放从云到端
  5. 防火墙添加ip白名单_如何给防火墙加白名单 防火墙添加ip白名单
  6. java超简单计算器_Java实验--超级简单的计算器
  7. [附源码]Nodejs计算机毕业设计交通事故证据交易平台Express(程序+LW)
  8. 奉劝那些想涨工资的程序员,这些 IT 大神们都在用的网站,你越早知道越好(建议收藏)!!...
  9. 二层设备与三层设备的区别
  10. 血色冲锋队洛谷P1332(福建省历届夏令营)