C# 读取dat文件
dat数据如图,现在想读出来一列的数据,保存在一个变量里就行,第一行不规则的数据就忽略掉就行,数据都是用逗号分隔的,有17列,如果想读出第k列的数据,请各位大侠帮帮忙。最...
dat数据如图,现在想读出来一列的数据,保存在一个变量里就行,第一行不规则的数据就忽略掉就行,数据都是用逗号分隔的,有17列,如果想读出第k列的数据,请各位大侠帮帮忙。
最好是用StreamRead方法,或者FileStream方法。
private void button2_Click(object sender, EventArgs e)
{
FileStream fstream = new FileStream(filepath, FileMode.Open,FileAccess.ReadWrite);
从这往下写就行。。。。。。。。。。。。。。。。
能回答的话又追加,多谢了 展开
最好是用StreamRead方法,或者FileStream方法。
private void button2_Click(object sender, EventArgs e)
{
FileStream fstream = new FileStream(filepath, FileMode.Open,FileAccess.ReadWrite);
从这往下写就行。。。。。。。。。。。。。。。。
能回答的话又追加,多谢了 展开
展开全部
public static double[] GetColumn(double[][] data, int i)//取得二维数组第i列,从0开始
{
List<double> list = new List<double>();
foreach (double[] line in data)
{
if (line.Length > i)
list.Add(line[i]);
}
return list.ToArray();
}
public static double[][] ReadFileToArray(string file)//读入文件至二维交错数组
{
string[] line = File.ReadAllText(file).Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
if(line.Length>0)
{
double[][] result = new double[line.Length - 1][];
int count = -1;
double temp = 0f;
foreach (string str in line)//处理每一行
{
if (count < 0) { count++; continue; }//首行不处理
string[] part = str.Split(new char[] { ',', ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
result[count] = new double[part.Length];
if (part.Length > 0)
{
int subcount = 0;
foreach (string s in part)//处理每行中数据
{
if (double.TryParse(s, out temp))//错误处理,防止行中错误数字或分隔符
result[count][subcount] = temp;
subcount++;
}
}
count++;
}
return result;
}
return null;
}
//示例
double[][] data = ReadFileToArray(@"d:\1.txt");//取出完整数组
if(data!=null)
double[] col = GetColumn(data, 1);//取得第二列
展开全部
int k = 0;//读取第几列的数据,默认
string strResult = "";//读取的结果
var filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "1.dat");
if (File.Exists(filepath))
{
using (StreamReader sw = new StreamReader(filepath))
{
string strLine1 = sw.ReadLine(); //读取第一行,不做处理
string strLine = sw.ReadLine();
while (!string.IsNullOrEmpty(strLine))
{
var array = strLine.Split(',');
if (array.Length > 0)
{
strResult += array[k];
strResult += ",";
}
strLine = sw.ReadLine();
}
}
}
追问
你的程序很好用,请问怎么把数据乘以1.1再写回原位置呢?
拟采纳你的答案了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
FileStream fstream = new FileStream(filepath, FileMode.Open,FileAccess.ReadWrite);
StreamReader fileReader = new StreamReader(fstream);
List<String[]> ls = new List<String[]>();
string strLine = "";
while (strLine != null)
{
strLine = fileReader.ReadLine();
if (strLine != null && strLine.Length > 0)
{
ls.Add(strLine.Split(','));
}
}
fileReader.Close();
//下面组建你要存放数据的Table,我以前的数据第一行是列名所以下编码,这里你自己根据需要来改写
DataTable dt = new DataTable();
for (int i = 1; i < 18; i++)
{
DataColumn newColumn = new DataColumn(“列”+i);
dt.Columns.Add(newColumn);
}
for (int i = 1; i < ls.Count; i++)
{
int j = 0;
DataRow mydr; mydr = dt.NewRow();
int intColCount = dt.Columns.Count;
foreach (string str in ls[i])
{
//如果只需要某几列自己在这里加判断吧
mydr[j] = str; j++;
}
dt.Rows.Add(mydr);
}
这样dt就是所有的数据吧,如果只要其中一部分,自己再简单改一下吧!
StreamReader fileReader = new StreamReader(fstream);
List<String[]> ls = new List<String[]>();
string strLine = "";
while (strLine != null)
{
strLine = fileReader.ReadLine();
if (strLine != null && strLine.Length > 0)
{
ls.Add(strLine.Split(','));
}
}
fileReader.Close();
//下面组建你要存放数据的Table,我以前的数据第一行是列名所以下编码,这里你自己根据需要来改写
DataTable dt = new DataTable();
for (int i = 1; i < 18; i++)
{
DataColumn newColumn = new DataColumn(“列”+i);
dt.Columns.Add(newColumn);
}
for (int i = 1; i < ls.Count; i++)
{
int j = 0;
DataRow mydr; mydr = dt.NewRow();
int intColCount = dt.Columns.Count;
foreach (string str in ls[i])
{
//如果只需要某几列自己在这里加判断吧
mydr[j] = str; j++;
}
dt.Rows.Add(mydr);
}
这样dt就是所有的数据吧,如果只要其中一部分,自己再简单改一下吧!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好!!
你把文件贴出来一部分内容,不要图片,发私信也行
你把文件贴出来一部分内容,不要图片,发私信也行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |