VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 731|回复: 3

文件流的问题,很简单的哟.

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-10 09:20:01 | 显示全部楼层 |阅读模式
假定文件中存了这样一些数据:
x=0,y=0,z=0
x=10,y=0,z=0
x=20,y=0,z=0
x=30,y=0,z=0
x=40,y=0,z=0
x=50,y=0,z=0
x=60,y=0,z=0
x=70,y=0,z=0
x=80,y=0,z=0
x=90,y=0,z=0
我需要将它们一行一行的读出来,存放在这样的一个数组中,数组是这样的:
首先定义一个结构:
struct Node
        {
                public int node_x;
                public int node_y;
                  public int node_z;
        }
public Node[] Nodelist = new Node[];
然后将文件中的x,y,z值分别存到NodeList的node_x,node_y,node_z中,请问用什么方法又快又好呢?数据量大概几千行。
回复

使用道具 举报

0

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-13 13:00:01 | 显示全部楼层
int x = Environment.TickCount;
            StreamReader file = new StreamReader("d:\\1.txt", Encoding.Default);
            string[] tmp = file.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            Node[] NodeList = new Node[tmp.Length];
            for (int i = 0; i < tmp.Length; i++)
            {
                string[] str = tmp[i].Split(',');
                NodeList[i].Node_x = int.Parse(str[0].Split('=')[1]);
                NodeList[i].Node_y = int.Parse(str[1].Split('=')[1]);
                NodeList[i].Node_z = int.Parse(str[2].Split('=')[1]);
            }
            file.Close();
            x = Environment.TickCount - x;
            MessageBox.Show(x.ToString());


1万行是31毫秒^^
回复

使用道具 举报

0

主题

56

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-1-14 13:27:01 | 显示全部楼层
static void Main(string[] args)
{
    int i=0;
    StreamReader sr = new StreamReader("C:\\test.txt",Encoding.Default);
    Regex regNum = new Regex(@"\d+");
    for (string line =sr.ReadLine();line!=null;line = sr.ReadLine())
    {
        MatchCollection mc = regNum.Matches(line);
        if (mc.Count > 0)
        {
            Nodelist[i].node_x = int.Parse(mc[0].Value);
            Nodelist[i].node_y = int.Parse(mc[1].Value);
            Nodelist[i].node_z = int.Parse(mc[2].Value);
            i++;
        }
    }
    sr.Close();
}

仅供参考~~
回复

使用道具 举报

0

主题

10

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-19 21:45:02 | 显示全部楼层
使用StreamReader进行流读取,
循环StreamReader.ReadLine方法,
速度应该是非常快的。只有几千行其实感觉不出来的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表