日期:2014-05-18  浏览次数:20967 次

C#读文件问题
.txt文件部分内容如下:
  0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.2845 2.9261 14.5593 18.6385 20.9956 20.9956 22.5552 23.3629 23.5966 23.8963 24.8564 26.0147 26.6141 26.5227 26.5227 26.2687 26.0909 25.9080 25.7658 25.7861 26.0655 26.6090 26.6090 27.4066 28.4226 29.3827 29.3827 30.0380 30.2819 30.5664 30.5664 31.2725 32.6847 32.6847 34.2443 35.2603 35.2603 35.5397 35.5397 35.5092 35.4736 35.4736 35.4482 35.6159 35.6159 35.9664 35.9664 36.5709 37.3888 37.3888 38.6994 38.6994  

这个文件,我是用C写的,核心代码是 fprintf(fpTDEP,"%13.4f",lasData->TDEP[i]);
现在我想用C#读出来,返回一个float[]数组

求解答。。。


------解决方案--------------------
C# code

            StreamReader reader = new StreamReader("c:\\1.txt");
            string source = reader.ReadToEnd();           
            string[] ss = source.Split(' ');
//ss就是分隔后的字符串数组,你可以对其中的每个元素进行处理

------解决方案--------------------
先把文件的内容读进string中,再用Split分割成string[]再用ConvertAll转化成float[]
------解决方案--------------------
System.IO.File
System.IO.FileStream
------解决方案--------------------
用StreamRead讀呀﹗因為我不知道你如何換行,所以自己試試,如果都沒換就用ReadtoEnd()將文本全部讀出,然後用分隔號如:空隔、\T(TAB)...,最後轉換成float,.NET要4.0之後的才有float,如果你用之前的版本就用double吧。
------解决方案--------------------
FileStream fs = new FileStream("NITI.txt", FileMode.Open, FileAccess.Read);
StreamReader rd = new StreamReader(fs);
rd.BaseStream.Seek(0,SeekOrigin.Begin);
string str = rd.ReadLine();
while(str!=null)
{
richTextBox1.Text = richTextBox1.Text + str;
richTextBox1.Text = richTextBox1.Text + '\n';
str = rd.ReadLine();
}
rd.Close();
fs.Close();
string[] ss = richTextBox1.Text.Split(' ');
------解决方案--------------------
C# code

private float[] ReadText(string filePath, Encoding encoding)
{
    string numText = File.ReadAllText(filePath, encoding);
    if (string.IsNullOrEmpty(numText)) return null;
    return numText.Split(new[] { ' ', '\r', '\n' }).Select(float.Parse).ToArray();
}