unity3d ios 读写txt文件

来源:互联网 发布:超人软件倒闭 编辑:程序博客网 时间:2024/06/05 17:12
1、加import System.IO; //(JS写的)
2、定义如下变量:
private var fileName1 : String; 
private var fs1 : FileStream;
private var sr1: StreamReader;

3、Start方法:
function Start () { 
// fileName1 = Application.dataPath + "/Resource/" + "test.txt"; // pc test path fileName1 = ChorusBinding.libraryPath() + "/test.txt";//iphone真机路径 
  fs1 = new FileStream(fileName1, FileMode.Open); sr1 = new StreamReader(fs1);
//这里我做了一些操作,如读txt中的某一行LineStringInOneFile(2);//读第二行的文字
... //省略若干行
fs1.Close();//关闭文件,这个不要忘记,以免出现内存问题
  }
说明:ChorusBinding.libraryPath()方法是用objective-c写的获取library目录。oc代码如下:
-(NSString *)GetLibraryPathToString
{
//    NSFileManager *fileManager = [NSFileManager defaultManager];
//    NSError *error;
   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *libraryDirectory = [paths objectAtIndex:0];
    return libraryDirectory;
}
4、 对于调用OC的方法,在unity3d中用[DllImport("__Internal")],具体代码见下面(C#写的)
[DllImport("__Internal")] 
 private static extern void _copyModelConfigFiles(); 
 public static void copyModelConfigFiles() {
 _copyModelConfigFiles();
 }
5、读txt
//获得txt文件的总行数 
function ReadFile(filepathIncludingFileName : String) { 
var sr: StreamReader = new File.OpenText(filepathIncludingFileName); 
  var input : String = ""; //读到的那一行的字符串 
var lineCount : int = 0;//总行数 
  while (true) { 
input = sr.ReadLine(); 
if (input == null) { break; } 
  lineCount++; 
 sr.Close(); 
 //返回某一行的字符串,i为传的行数,是第一个配置文件test.txt 
function LineStringInOneFile(i:int) {
var lineContent : String=""; 
 var tempLine : int = 0; 
 while(tempLine<i+1) {
sr1.BaseStream.Seek(0, SeekOrigin.Begin);//重新读取第一行 
 lineContent = sr1.ReadLine(); 
 if (lineContent == null) { break; } 
 tempLine ++; 
 } 
 sr1.ReadToEnd(); 
 return lineContent; 
}
//上面方法中定义的变量应该能一眼就看出是什么类型,就不贴整个类上去了,我是从项目中拷出来的
0 0
原创粉丝点击