2013-02-20 65 views
0

我想用FileHelper读取一个csv文件,其中的数据排列如下: 0,0,0,0,0,0,0,1,1,1,0 ,0,0,0,...... 其中1kX1k。 这里是我的FileHelper代码:FileHelper读取csv文件冻结

[DelimitedRecord(",")] 
    public class ROIMaskCSV 
    { 
     public int value; 

     //[TransformToRecord(typeof(ROIMaskCSV[]))] 
     public static ROIMaskCSV[] loadMask(string fileName) 
     { 

      DelimitedFileEngine engine = new DelimitedFileEngine(typeof(ROIMaskCSV)); 

      ROIMaskCSV[] mask = (ROIMaskCSV[])engine.ReadFile(fileName); 

      // mask[0].value = this.value; 

      return mask; 
     } 
    } 

而且这里是FileHelper loadMask()函数被调用:

public class TIFFIImageIO 
{ 
    public static int LoadTIFF(string fileName, int x, int y) 
    { 

     ROIMaskCSV[] mask = ROIMaskCSV.loadMask("d:\\myMask.csv"); 
     ...... 

我临危受命,所以当程序得到:

ROIMaskCSV[] mask = (ROIMaskCSV[])engine.ReadFile(fileName); 

的程序只是冻结。我不确定发生了什么事。我做错了什么?任何人都可以提供一些建议?任何建议表示赞赏。

+0

多少时间没有你给它?这可能只是缓慢吗? – 2013-02-20 16:04:52

+0

我会对分钟说。它看起来不正确...... – 2013-02-20 16:05:51

+0

该程序是否仍在使用CPU? – 2013-02-20 16:12:35

回答

2

好的。我放弃。我只会流读取文件,然后解析它。这是我读我的CSV文件中的代码:

byte[] array = System.IO.File.ReadAllBytes(fileName); 

然后转换阵列[I]为char/int或任何类型你想要的。

了Char,例如ASC转换II 65 'A':

char.ConvertFromUtf32(65); 

为int,例如ASC转换II 48〜0:

Convert.ToInt32(char.ConvertFromUtf32(48));