how to read a txt file faster ? my projects' loading time is so long ! about 30 minutes!!!

the codes to read txt file and parse out the datas i need:

   #pragma strict
   import System.IO;
   import System.Text;
   var stream:FileStream;
   var str : String ;
   ////many  other  var ....

   function Start()
   {  
       if (str== "" )
  {     ///reading  txt  file>.........
    stream = File.Open("g:\\Data.txt",FileMode.Open);
    var b :byte[] = new byte [8];
    var temp:UTF8Encoding  = new UTF8Encoding(true);
    while(stream.Read(b,0,b.Length)>0)
    str += temp.GetString(b);
  }

  ///////parse  out  the   datas   i   want ......

  var rows : String[]  = str.Split("$"[0]);
  var arr = new Array();
  var arra=new Array();
  for ( var i:int=1;i<rows.length-1; i++ )
  {
    var datas : String[] = rows*.Split(","[0]);*
 *var  x1 = ParseStr(datas[3]);*
 *var  z1 = ParseStr(datas[5]);*
 *var  x2 = datas[12];//*
 *var  y2 = datas[8];//*
 *var  z2 = datas[13];//*
 *var  w2= datas[7];//*
 *var v4:Vector4;//*
 *var v5:Vector4;//*
 *v4.x = x1;*
 *v4.y = float.Parse("0");*
 *v4.z = z1;*
 *v4.w=speed;//w*
 *v5.x=float.Parse(x2);//0;//*
 *v5.y=float.Parse(y2);//*
 *v5.z=float.Parse(z2);//0;//*
 *v5.w=float.Parse(w2);//*
 *arr.Push(v4);*
 *arra.Push(v5);*
 *}*
 *MoveDatas = new Vector4[arr.length];*
 *MoveDatass = new Vector4[arra.length];*
 *for ( var j:int=0;j<arr.length; j++ )*
 *{*
 *MoveDatas[j] =arr[j];*
 *MoveDatass[j]=arra[j];*
 *}*
 *StartMove();*
 *}*
*```*
*<p><strong>so how can i improve my codes to  make it  run  faster?   someone  help me  please.....</strong></p>*

You are already starting of slow by reading your file 8 bytes at a time. By using a TextAsset you should be able to speed up the actual loading. This will also make your application more portable.

Reducing the number of temporary variables will also speed up your code.

As for the parsing it looks like you are converting a lot of numbers from string to floats, if after step one you are still slow you might have to move away from a readable text format and use a binary format that reads the numbers directly.

In general this piece on data handling should help you out a little bit more.

How about this? What is ParseStr function?

import System.Collections.Generic;

function Start() {  
    var file : String = File.ReadAllText("g:\\Data.txt");
    var rows : List.<String> = List.<String>(file.Split("$"[0]));
    rows.RemoveAt(0);
    rows.RemoveAt(rows.Count - 1);
    var v1List = List.<Vector4>(rows.Length);
    var v2List = List.<Vector4>(rows.Length);        
    for (var row : String in rows) {
        var datas : String[] = row.Split(","[0]);

        var v1 : Vector4;
        v1.x = ParseStr(datas[3]);
        v1.y = 0;
        v1.z = ParseStr(datas[5]);
        v1.w = speed;

        var v2 : Vector4;
        v2.x = float.Parse(datas[12]);
        v2.y = float.Parse(datas[8]);
        v2.z = float.Parse(datas[13]);
        v2.w = float.Parse(datas[7]);

        v1List.Add(v1);
        v2List.Add(v2);
    }

    // I guess these are some member variables of sorts.
    MoveDatas = v1List.ToArray();
    MoveDatass = v2List.ToArray()        
    StartMove();
}