我的文件类型是txt的,需要读取该文件的后三列内容,如图:
将这些数据导入listview,该如何执行?
主要是不知道如何读取后三列求大神指教,谢谢!
用stream流读取存到字符数组中
public static string[] Read(string path)
{
StreamReader sr = new StreamReader(path, Encoding.Default);
String line;
string l=string.Empty;
string[] lines;
string[] lin=null;
while ((line = sr.ReadLine()) != null)
{
l += line+"#";
}
lines = l.Split('#');
for (int i = lines.Length - 1; i > lines.Length - 4 && i > 0; i--)
lin[i] = lines[i];
return lin;
}
你这txt的文件读取的内容不是很多,可以用File的readalllines方法来读:读取的内容以字符串数组的形式存入数组,方便你下一步解析。代码如下:
string[] strs = File.ReadAllLines(@"d:\csharp\testdata.txt");
你好利害。怎么写的怎么读不就可以了。readline 按你的格式读出来是的
上次的回答有点瑕疵那个返回的数组会有点问题。
public static string[] Read(string path)
{
StreamReader sr = new StreamReader(path, Encoding.Default);
String line;
string l = string.Empty;
string[] lines;
string[] lin = new string[3];
while ((line = sr.ReadLine()) != null)
{
l += line + "#";
}
lines = l.Split('#');
for (int i = lines.Length - 1, j = 0; i > lines.Length - 4 && i > 0; i--)
lin[j++] = lines[i-1];
return lin;
}
这个返回的是后面的三行内容。如果是cmd的话是这么调用的。
string[] str = null;
str= Read(@"C:\Users\hero\Desktop\新建文本文档.txt");
foreach(string s in str)
Console.WriteLine(s);
不好意思刚才实验出错了。下面那个兄弟的方法也是可行的。我以为是所有昂读成一整行,实际上是我的txt是只要一行,调试的时候没想到。
public static string[] Readline(string path)
{
string[] lin = new string[3];
string[] strs = File.ReadAllLines(path, Encoding.Default);
for (int i = strs.Length , j = 0; i > strs.Length -3 && i > 0; i--)
lin[j++] = strs[i - 1];
return lin;
}
你会发现跟我上次那个for循环有点不一样,那是因为我那个方法每一行读后添加一个#字符,最后一行末尾也有#字符,split分割的时候最后会多出一行空字符。所以要去length-1。他这个方法并不存在这个问题,而且我那个方法的前提条件是你的txt文件内没有#字符不然分割的时候回出现问题。这个是最优答案,借鉴了楼下兄弟的方法。